🌕🌕 128. 最长连续序列

吞佛童子2022年10月10日
  • algorithm
  • array
  • HashSet
小于 1 分钟

🌕🌕 128. 最长连续序列

难度: 🌕🌕

问题描述

img_31.png


解法

class Solution {
    public int longestConsecutive(int[] nums) {
        // 思路:
        // 借助 HashSet ,存储所有元素
        // 遍历时,判断是否存在前一个元素,如果有,那么之前肯定遍历过当前元素,跳过
        // 只有是连续序列的首个元素,才有特权,往后遍历直到不连续
        int len = nums.length;
        HashSet<Integer> set = new HashSet<>();
        for(int i : nums) {
            set.add(i);
        }
        // 再次遍历,判断是否有前面的值
        int res = 0;
        for(int i = 0; i < len; i ++) {
            int cur = nums[i];
            if(set.contains(cur - 1)) {
                continue;
            }
            // 不存在上一个元素,说明如果存在连续子序列,当前值为序列首元素
            int count = 1;
            while(set.contains(cur + 1)) {
                count ++;
                cur ++;
            }
            res = Math.max(res, count);
        }
        return res;
    }
}

输出

img_30.png

上次编辑于: 2022/10/10 下午8:43:48
贡献者: liuxianzhishou