/*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.*/
#include <vector>
#include <unordered_set>
#include <algorithm>
#include <iostream>
class Solution
{
public:
int longestConsecutive(std::vector<int>& num)
{
if(num.size()==0)
return 0;
std::unordered_set<int> set;
int longest=0;
int cc=0;
std::for_each(num.begin(),num.end(),[&](const int& val)
{
set.insert(val);
}
);
std::for_each(num.begin(),num.end(),[&](const int& val)
{
if(set.find(val)==set.end()) ;
else
{
cc=1;
set.erase(val);
for(int tv=val+1;;++tv)
{
if(set.find(tv)!=set.end())
{
最长连续序列(O(n),C++版)
最新推荐文章于 2024-12-17 20:24:12 发布