马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
题目:
给定一个未排序的整数数组 nums ,找出数字一连的最长序列(不要求序列元素在原数组中一连)的长度。
请筹划并实现时间复杂度为 O(n) 的算法办理此题目。
示例 1:
输入:nums = [100,4,200,1,3,2]
输出:4
表明:最长数字一连序列是
[1, 2, 3, 4]。它的长度为 4。
示例 2:
输入:nums = [0,3,7,2,5,8,4,6,0,1]
输出:9
提示:
0 <= nums.length <= 105
-109 <= nums <= 109
解答思绪:
以下是使用 Java 实现的时间复杂度为 O(n) 的算法来办理此题目:
- import java.util.HashSet;
- import java.util.Set;
- public class LongestConsecutiveSequence {
- public int longestConsecutive(int[] nums) {
- Set<Integer> numSet = new HashSet<>();
- for (int num : nums) {
- numSet.add(num);
- }
- int longestStreak = 0;
- for (int num : numSet) {
- if (!numSet.contains(num - 1)) {
- int currentNum = num;
- int currentStreak = 1;
- while (numSet.contains(currentNum + 1)) {
- currentNum++;
-
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金 |