您的位置:首页 > 产品设计 > UI/UE

leetcode[128]Longest Consecutive Sequence

2015-02-09 13:07 330 查看
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) {
if(num.empty())return 0;
unordered_set<int> all;
unordered_set<int> visited;
for(int i=0;i<num.size();i++)
all.insert(num[i]);
int max=0;
for(int i=0;i<num.size();i++)
{
if(visited.find(num[i])!=visited.end())continue;
int count=1;
visited.insert(num[i]);
int left=num[i];
while(all.find(--left)!=all.end())
{
count++;
visited.insert(left);
}
int right=num[i];
while(all.find(++right)!=all.end())
{
count++;
visited.insert(right);
}
max=max>count?max:count;
}
return max;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: