最长连续序列
问题描述
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。
请你设计并实现时间复杂度为 O(n) 的算法解决此问题。
样例输入
cpp
nums = [100,4,200,1,3,2]
样例输出
cpp
4
评测用例规模与约定
0 <= nums.length <= 10^5
-10^9 <= nums[i] <= 10^9
解析
找到数组中最长的连续序列长度,我们采用set的方法进行去重,然后检查数组每一个数的顺序前一个数是否在集合中,有就循环检查直到没有,更新最大长度即可。
参考程序
java
class Solution {
public int longestConsecutive(int[] nums) {
Set<Integer>num_set=new HashSet<Integer>();
for(int num:nums){
num_set.add(num);
}
int l=0;
for(int num:num_set){
if(!num_set.contains(num-1)){
int cur=num;
int curs=1;
while(num_set.contains(cur+1)){
cur+=1;
curs+=1;
}
l=Math.max(l,curs);
}
}
return l;
}
}
难度等级
⭐️(1~10星)
⭐️⭐️
以个人刷题整理为目的,如若侵权,请联系删除~