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

 

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;

        

    }

};


 

 

你可能感兴趣的:(LeetCode)