LeetCode:最长连续序列

java 复制代码
class Solution {
    public int longestConsecutive(int[] nums) {
        Set<Integer> set = new HashSet<>();
        //将数组中的数字存到set集合中
        for(int num : nums){
            set.add(num);
        }

        int longestStreak = 0;
        //挨个数字检查
        for(int num : set){
            //从set集合中查是否有该比该数字小的数字,如果没有,作为开头开始继续往后找
            if(!set.contains(num - 1)){
                int currentNum = num;
                int currentStreak = 1;
                while(set.contains(currentNum + 1)){
                    currentNum += 1;
                    currentStreak += 1;
                }
                longestStreak = Math.max(longestStreak,currentStreak);
            }
        }
        return longestStreak;
    }
}

先挨个数字检查能作为头元素的数字,找到头元素后,开始找头元素连续的后续元素。

相关推荐
2401_879503411 小时前
C++与FPGA协同设计
开发语言·c++·算法
重生之后端学习2 小时前
287. 寻找重复数
数据结构·算法·leetcode·深度优先·图论
抓个马尾女孩2 小时前
位置编码:绝对位置编码、相对位置编码、旋转位置编码
人工智能·深度学习·算法·transformer
今儿敲了吗2 小时前
46| FBI树
数据结构·c++·笔记·学习·算法
小辉同志2 小时前
139. 单词拆分
算法·动态规划
oem1102 小时前
C++中的访问者模式变体
开发语言·c++·算法
IronMurphy3 小时前
【算法二十七】230. 二叉搜索树中第 K 小的元素 199. 二叉树的右视图
算法·深度优先
暮冬-  Gentle°3 小时前
C++中的工厂方法模式
开发语言·c++·算法
番茄去哪了3 小时前
Java基础面试题day03
面试·职场和发展