题目要求:
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)
{
unordered_set<int> hash_table(num.begin(), num.end());
int max_len = 0;
for(size_t i = 0; i < num.size(); ++i)
{
int cnt = 1;
int value = num[i] - 1;
while(hash_table.find(value) != hash_table.end())
{
++cnt;
hash_table.erase(value);
--value;
}
value = num[i] + 1;
while(hash_table.find(value) != hash_table.end())
{
++cnt;
hash_table.erase(value);
++value;
}
if(max_len < cnt)
max_len = cnt;
}
return max_len;
}
};