128.最长连续序列
给定一个未排序的整数数组 nums
,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。
请你设计并实现时间复杂度为 O(n)
的算法解决此问题。
class Solution {
public int longestConsecutive(int[] nums) {
//排序
Arrays.sort(nums);
//包装类,转换成流,判断长度是否为0,为0则无连续序列
if(Arrays.stream(nums).count()==0){
return 0;
}
int maxLen = 1;
int len = 1;
for(int i = 0; i < nums.length - 1; i++) {
//如果下一个数字与这个数字相等,将连续序列开头放在下一位
if(nums[i] == nums[i+1]) {
continue;
}
//如果下一个数字连续,则当前连续序列长度+1,判断是否比其他连续序列长,更新最长序列长度maxLen
if(nums[i] == nums[i+1] - 1) {
len += 1;
if(maxLen < len) {
maxLen = len;
}
}
//不连续,更新连续序列长度len
else {
len = 1;
}
}
return maxLen;
}
}