zoukankan      html  css  js  c++  java
  • 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;
        }
    }
  • 相关阅读:
    第五章
    第四章
    第三章
    第二章
    第一章
    configparser-xml-subprocess-shutil
    sys,os,模块-正则表达式
    %----format 格式化字符串---- 生成器---- 迭代器
    python 内置函数
    python 内置函数!
  • 原文地址:https://www.cnblogs.com/peanut-zh/p/13892327.html
Copyright © 2011-2022 走看看