题目:
分析:
1、最长连续序列的长度为 y-x+1,如1-4:4-1+1 = 4
2、不要被这里的On误导,不敢使用双层循环
3、只要找到最小的数值,并由此开始计算,不产生重复计算,则为On
代码:
public int longestConsecutive(int[] nums) {
Set<Integer> set = new HashSet<>();
for (int num : nums) {
set.add(num);
}
int max = 0;
for (int i = 0; i < nums.length; i++) {
if (!set.contains(nums[i] - 1)) {
int y = nums[i] + 1;
while (set.contains(y)) {
y++;
}
max = Math.max(max, y-nums[i]);
}
}
return max;
}