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