zoukankan      html  css  js  c++  java
  • 给定无序数组,求最大的连续的数的长度

    Given an unsorted array of integers, find the length of the longest consecutive elements sequence.

    For example,
    Given [100, 4, 200, 1, 3, 2],
    The longest consecutive elements sequence is [1, 2, 3, 4]. Return its length: 4.

    Your algorithm should run in O(n) complexity.

    class Solution {
    public:
        int longestConsecutive(vector<int> &num) {
            map<int, bool> flagMap;
            int nMaxLen = 1;
            
            for (vector<int>::iterator itr=num.begin(); itr!=num.end();++itr)
                flagMap[*itr] = true;
                
            for (vector<int>::iterator itr=num.begin(); itr!=num.end();++itr)
            {
                int nCount = 1;
                if (flagMap[*itr])
                {
                    flagMap[*itr] = false;      // mark false
                    
                    int nLeft = *itr-1;
                    while (flagMap.find(nLeft)!=flagMap.end() && flagMap[nLeft]){
                        flagMap[nLeft] = false;
                        ++nCount;
                        nLeft -= 1;
                    }
                    
                    int nRight = *itr + 1;
                    while (flagMap.find(nRight)!=flagMap.end() && flagMap[nRight]){
                        flagMap[nRight] = false;
                        ++nCount;
                        nRight += 1;
                    }
                }
                
                if (nCount > nMaxLen)
                nMaxLen = nCount;
            }
            
            return nMaxLen;
        }
        
    };
  • 相关阅读:
    进程池-非阻塞式
    进程
    单例模式
    Python内置函数之open()
    Python内置函数之len()
    Python内置函数之isinstance()
    Python内置函数之input()
    可迭代对象,迭代器(生成器)区别
    Tomcat控制台输出
    Python内置函数之format()
  • 原文地址:https://www.cnblogs.com/zhhwgis/p/3956166.html
Copyright © 2011-2022 走看看