思路:对于一个连续的序列,必然会有左边界。如[1,2,3,4]中,1就是左边界。遍历数组,将遍历的数num当作左边界,然后查看数组中是否有num-1,如果有,那么num就不是左边界。找到左边界后再看num+1,num+2,……等等是否存在,保存序列长度,最后返回最大值。
public int longestConsecutive(int[] nums){
Set<Integer> set=new HashSet<>();
for(int num:nums) set.add(num);
int res=0;
for(int num:nums){
if(set.contains(num-1)) continue;
else{
int len=0;
while(set.contains(num++)) len++;
res=Math.max(res,len);
}
}
return res;
}