给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 示例 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) {
Set<Integer> set=new HashSet();
//去重先
for(int i:nums){
set.add(i);
}
int maxLen=0;//最大长度
for(int n:nums){
//如果n-1不在set里面, 才能进行( 防止一个元素参与多次序列组合)
if(!set.contains(n-1)){
int len=1;//记录这次序列的长度
int want=n+1;//看下他的下一个数在不在里面
//如果下一个数也在里面 更新他的长度
while(set.contains(want)){
len++;
want++;
}
//序列结束 看下最大值需不需要更改
maxLen=Math.max(maxLen,len);
}
}
return maxLen;
}
}