一开始想用基数排序,但感觉写起来真的太复杂了,复杂度应该是1e6,算符号一共十位嘛。
这个用set的我感觉还得看版本,1.8用红黑树要是冲突太多还真不一定算O(n)
做法就是先去重,然后遍历维护ans。
如果x-1在set中存在,就不查,等到x-1的时候再查。
class Solution {
public int longestConsecutive(int[] nums) {
Set<Integer> set = new HashSet<>();
for(int num:nums) {
set.add(num);
}
int ans = 0;
for(Integer num : set) {
int temp = 1;
if(!set.contains(num-1)) {
while(set.contains(++num)) {
temp++;
}
ans = Math.max(temp, ans);
}
}
return ans;
}
}