zoukankan      html  css  js  c++  java
  • 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.

    分析:主要用map来记录nums[i]是否检查过。检查过则从map中删除,同时检查nums[i] + 1和nums[i] - 1。

    运行时间:40ms

     1 class Solution {
     2 public:
     3     int longestConsecutive(vector<int>& nums) {
     4         map<int, int> hashmap;
     5         for(int i = 0; i < nums.size(); i++) hashmap.insert(map<int, int>::value_type(nums[i], i));
     6         
     7         int longest = 1;
     8         map<int, int>::iterator ite;
     9         for(ite = hashmap.begin(); ite != hashmap.end(); ite++){
    10             int len = 1;
    11             
    12             int j = ite->first + 1;
    13             for(; hashmap.find(j) != hashmap.end(); j++){
    14                 len++;
    15                 hashmap.erase(j);
    16             }
    17             int k = ite->first - 1;
    18             for(; hashmap.find(k) != hashmap.end(); k--){
    19                 len++;
    20                 hashmap.erase(k);
    21             }
    22             longest = max(longest, len);
    23         }
    24         return longest;
    25     }
    26 };
  • 相关阅读:
    405
    406
    4-1
    3-11
    3-10
    3-9
    3-8
    3-7
    3-5
    3-4
  • 原文地址:https://www.cnblogs.com/amazingzoe/p/4493854.html
Copyright © 2011-2022 走看看