解题思路
先对原数组排序,然后利用Set记录出现过的数字,从最小的开始找连续的
重要的一点是一个数字只用一次
代码
class Solution {
public int longestConsecutive(int[] nums) {
int ans = 0;
Arrays.sort(nums);
Set<Integer> set = new HashSet<>();
for (int i=0;i<nums.length;i++){
set.add(nums[i]);
}
for (int i=0;i<nums.length;i++){
int cur = nums[i];
if (set.contains(cur)){
int size = 1;
int curNum = cur;
while (true){
curNum++;
if (!set.contains(curNum)){
break;
}
size++;
set.remove(curNum);
}
set.remove(cur);
ans = Math.max(ans,size);
}
}
return ans;
}
}