128. 最长连续序列
给定一个未排序的整数数组,找出最长连续序列的长度。
要求算法的时间复杂度为 O(n)。
class Solution {
public int longestConsecutive(int[] nums) {
//利用hashmap
int longest = 0;
HashMap<Integer,Boolean> m=new HashMap<Integer,Boolean>();
for(int num : nums){
m.put(num, true);
}
for(int num : nums){
int len = 0;
int i = num + 1;
if(m.get(num)){
len++;
m.put(num, false);
while(m.containsKey(i)){
m.put(i,false);
len++;
i++;
}
i = num - 1;
while(m.containsKey(i)){
m.put(i,false);
len++;
i--;
}
}else
continue;
longest = Math.max(longest, len);
}
return longest;
}
}