
注意点: 1.每次开始新的遍历,都要将当前最大长度更新为1 2.while循环内部要进行num++
class Solution {
public int longestConsecutive(int[] nums) {
Set<Integer> num_set = new HashSet<>();
int maxLen = 0;
for(int num : nums){
num_set.add(num);
}
for(int num : num_set){
int curMaxLen = 1;
if(!num_set.contains(num-1)){
while(num_set.contains(num+1)){
num++;
curMaxLen++;
}
maxLen = Math.max(maxLen,curMaxLen);
}
}
return maxLen;
}
}

时间复杂度:O(n)两次for循环,最多循环2n次。 空间复杂度:O(n)建立了哈希表,最坏情况没有相同的数,存储n个数