zoukankan      html  css  js  c++  java
  • [LeetCode]Longest Consecutive Sequence

    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.

    思考:空间换时间,查找O(1)用unordered_set。

    class Solution {
    public:
        int longestConsecutive(vector<int> &num) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            unordered_set<int> existTable;
            for(int i = 0; i < num.size(); ++i) existTable.insert(num[i]);
            unordered_set<int> visitedTable;
            int mmax = INT_MIN;
            for(int i = 0; i < num.size(); ++i)
            {
                int curNum = num[i];
                if(visitedTable.find(curNum) != visitedTable.end()) continue;
                int cnt = 1;
                //search left
                int left = curNum;
                while(existTable.find(--left) != existTable.end()) cnt++, visitedTable.insert(left);
                int right = curNum;
                while(existTable.find(++right) != existTable.end()) cnt++, visitedTable.insert(right);
                mmax = max(cnt, mmax);
            }
            return mmax;
        }
    };
    

      

  • 相关阅读:
    元组tuple
    列表list
    day11---闭包函数
    day10函数对象,嵌套,名称空间,作用域
    day10函数对象,嵌套,名称空间,作用域
    day--函数
    day8--文件管理2
    day ---7,文件管理
    day7,文件编码
    day6---字典,集合内置方法
  • 原文地址:https://www.cnblogs.com/Rosanna/p/3597902.html
Copyright © 2011-2022 走看看