class Solution {
public int longestConsecutive(int[] nums) {
int res = 0;
// 使用set去重
HashSet<Integer> nums_set = new HashSet<>();
for (int num : nums) {
nums_set.add(num);
}
// 再次遍历,寻找比当前数字小1的数字
for (int num : nums_set) {
// 如果当前set中不包含num-1这个数字
if (!nums_set.contains(num - 1)) {
// 则获取当前数字,并且将计数君加1
int curNum = num;
int count = 0;
// 如果不包含num-1,则从num+1开始找,并用计数君计数即可。
while (nums_set.contains(curNum)) {
curNum++;
count++;
}
// 获取最大计数君
res = Math.max(res,count);
}
}
return res;
}
}
满足O(N)的时间复杂度要求。