当前位置:编程学习 > C/C++ >>

[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.


[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; 
         
    } 
}; 

补充:软件开发 , C++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,