1 最长连续序列-128
- 题目描述:
给定一个未排序的整数数组 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
- 题解:
class Solution {
public int longestConsecutive(int[] nums) {
// 新建hash
HashSet<Integer> num_set = new HashSet<>();
// 计数
int longestStreak = 0;
// 去重(遍历后加入num_set)
for (int num : nums) {
num_set.add(num);
}
// 遍历num_set
for(int num:num_set){
// 如果不存在num-1,表示该num是第一个连续数组的num
if(!num_set.contains(num-1)){
int x = num +1;
while(num_set.contains(x)){
x++;
}
longestStreak=Math.max(longestStreak,x-num);
}
}
return longestStreak;
}
}