3.哈希表-3-最长连续序列

cloud-yuan
1
2026-06-10
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 currentNum = num;
                int currentLen = 1;
                
                while (set.contains(currentNum + 1)) {
                    currentNum++;
                    currentLen++;
                }

                maxLen = Math.max(maxLen, currentLen);
            }
        }
    
        return maxLen;
    }
}

解题思路

  1. 使用HashSet先进行去重

  2. 然后遍历set,采用contains检查起点,当已经没有num - 1时证明为当前set的长度,下一步循环开始获取到set整个的长度,最后使用Math.max获取到最长序列