[leetcode]Longest Consecutive Sequence

来源:互联网 发布:linux valgrind 编辑:程序博客网 时间:2024/04/23 14:39

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


原创粉丝点击