LeetCode 128. 最长连续序列

Posted peanut_zh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 128. 最长连续序列相关的知识,希望对你有一定的参考价值。

 当我按照官方的思路写出代码,提交后并未通过,查看错误,发现算法错误的将[2147483647,-2147483648]也视为连续的整数了,这是因为我没有考虑到int类型的边界。将代码稍加修改,即成功提交

//哈希表,建议看官方的题解,尤其是演示动画
class Solution {
    public int longestConsecutive(int[] nums) {
        //首先用set把这个整数数组去重
        Set<Integer> set = new HashSet<Integer>();
        for(int num : nums){
            set.add(num);
        }
        
        //维护一个最长连续序列的长度变量
        int maxLongNum = 0;
        //遍历Set
        for(int num : set){
            //如果当前元素为X,找它的前一个元素X-1是否存在在Set中,存在即跳过,因为从X-1的最长序列包含从X开始的最长序列
            if(num == Integer.MIN_VALUE || !set.contains(num - 1)){
                //X-1不存在,即更新目前的连续整数数组的长度,再找X+1,如果可以找到,长度+1
                int curNum = num;
                int curLongNum = 1;
                while(set.contains(curNum + 1)){
                    curNum += 1;
                    if(curNum == Integer.MIN_VALUE) break;
                    curLongNum += 1;
                }
                //没有X+1了,把目前的连续长度和最大的长度比较,更新最大长
                maxLongNum = Math.max(maxLongNum,curLongNum);
            }
        }
        //遍历完后,返回最长长度
        return maxLongNum;
    }
}

 

以上是关于LeetCode 128. 最长连续序列的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 128. 最长连续序列

LeetCode 128. 最长连续序列

LeetCode 128. 最长连续序列c++/java详细题解

LeetCode第128题—最长连续序列—Python实现

leetcode 128:最长连续序列

LeetCode 128. 最长连续序列