​​128. 最长连续序列​​

核心思路:用 HashSet 去重 + O(1) 查找 + 只从“起点”扩展。


思路

把所有数字放进HashSet

然后只做一件事:

只有当num - 1不存在时,才把num当作“连续序列起点”

这样可以避免重复遍历。

从起点不断 +1 扩展长度。


Java O(n)

import java.util.*; class Solution { public int longestConsecutive(int[] nums) { if (nums == null || nums.length == 0) return 0; Set<Integer> set = new HashSet<>(); for (int num : nums) { set.add(num); } int maxLen = 0; for (int num : set) { // 只从“起点”开始 if (!set.contains(num - 1)) { int current = num; int len = 1; while (set.contains(current + 1)) { current++; len++; } maxLen = Math.max(maxLen, len); } } return maxLen; } }