程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> [leetcode]Longest Consecutive Sequence

[leetcode]Longest Consecutive Sequence

編輯:C++入門知識

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.


[cpp]
class Solution { 
public: 
    int longestConsecutive(vector<int> &num) { 
        // Start typing your C/C++ solution below  
        // DO NOT write int main() function  
        unordered_set<int> hash; 
         
        for(int i = 0; i < num.size(); i++){ 
            hash.insert(num[i]); 
        } 
         
        unordered_set<int>::iterator it; 
        int result = 0; 
        int tmp_elem; 
        int cnt; 
        unordered_set<int>::iterator tmp_it; 
         
        while(!hash.empty()){ 
            cnt = 1; 
            it = hash.begin(); 
             
            int elem = *it; 
            hash.erase(it); 
             
            tmp_elem = elem + 1; 
            while((tmp_it = hash.find(tmp_elem)) != hash.end()){ 
                cnt++; 
                tmp_elem++; 
                hash.erase(tmp_it); 
            } 
  
            tmp_elem = elem - 1; 
            while((tmp_it = hash.find(tmp_elem)) != hash.end()){ 
                cnt++; 
                tmp_elem--; 
                hash.erase(tmp_it); 
            } 
            result = max(result, cnt); 
             
        } 
         
        return result; 
         
    } 
}; 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved