水个题解
public static int longestConsecutive(int[] nums) {
Map<Integer,Integer> map =new HashMap<>();
int max=0;
for (int num : nums) {
if(!map.containsKey(num)){
int count = 1;
if (map.containsKey(num - 1)) {
count += map.get(num - 1);
}
map.put(num, count);
if(map.containsKey(num +1)){
count+=map.get(num +1);
map.replace(num+map.get(num +1), count);
map.replace(num,count);
}
if(map.containsKey(num - 1)){
map.replace(num-map.get(num -1),count);
}
max = Math.max(max, count);
}
}
return max;
}
经典的使用HashMap,键为数字,值为该数字对应的最大count,但是耗时较长。
题中要求为O(n),但是最优的算法居然用了sort,很抽象
AI评价我的时间复杂度为O(n),也算赢了吧(