class Solution {
// O(n)就不能是排序
// 用HashSet存储所有元素
// 对于一个最长序列hashSet中一定不包含当前的nums[i] - 1;
// 判断是否存在nums[i] + 1;
public int longestConsecutive(int[] nums) {
if (nums.length == 0) {
return 0;
}
HashSet<Integer> hs = new HashSet<>();
for (int i = 0; i < nums.length; i++) {
hs.add(nums[i]);
}
int max = 1;
for (int num : nums) {
if (hs.contains(num - 1)) {
continue;
}
int maxTmp = 1;
while (hs.contains(num + 1)) {
num += 1;
maxTmp++;
}
max = Math.max(maxTmp, max);
}
return max;
}
}