zoukankan      html  css  js  c++  java
  • 128. 最长连续序列

    给定一个未排序的整数数组,找出最长连续序列的长度。

    要求算法的时间复杂度为 O(n)。

    示例:

    输入: [100, 4, 200, 1, 3, 2]
    输出: 4
    解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。

    0 1 1 2 输出 3
     
    class Solution {
    public:
        //法一 排序
        int longestConsecutive(vector<int>& nums) {
            if(nums.size() == 0){
                return 0;
            }
            sort(nums.begin(),nums.end());
            int maxCount=1,tmpCount=1;
            for(int i=1;i<nums.size();i++){
                if(nums[i] == nums[i-1]+1){
                    tmpCount++;
                    maxCount = max(tmpCount,maxCount);
                }else if(nums[i] == nums[i-1]){
                    //0 1 1 2 
                    continue;
                }else{
                    tmpCount = 1;
                }
            }
            return maxCount;
        }
    };
    

     

     法二 

    class Solution {
    public:
        //o(n)时间复杂度  unordered_map底层是hash表
        int longestConsecutive(vector<int>& nums) {
            //中心扩展法,向两边查找,利用一个map顺便还可以去重
            unordered_map<int,bool> m;
            for(int i=0;i<nums.size();i++){
                m.insert(pair<int,bool>(nums[i],false));
            }
            if(m.size() == 0){
                return 0;
            }
            int tmpCount=1,maxCount=1;
            map<int,bool>::iterator iter,it;
            for(int i=0;i<nums.size();i++){
                //关键点
                if(m[nums[i]]){
                    continue;
                }
                m[nums[i]] = true;
                for(int left = nums[i]-1 ;m.find(left)!=m.end();left--){
                    tmpCount++;
                    m[left] = true;
                }
                for(int right = nums[i]+1 ;m.find(right)!=m.end();right++){
                    tmpCount++;
                    m[right] = true;
                }
                maxCount=max(maxCount,tmpCount);
                tmpCount = 1;
            }
            return maxCount;
        }
    };
    

      

     
  • 相关阅读:
    .NET Framework 1.13.5 版本安装包下载链接
    可遇不可求的Question之MYSQL获取自增ID的四种方法篇
    20110917 晴
    北海道 7天6夜 自助游
    想你了
    猫忘带电话了
    [转载经验] 探亲签证申请
    帮忙打印
    打印机
    20110910 晴
  • 原文地址:https://www.cnblogs.com/wsw-seu/p/13259157.html
Copyright © 2011-2022 走看看