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

LeetCode-128.Longest Consecutive Sequence

2016-06-11 22:06 459 查看
https://leetcode.com/problems/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.

首先将输入nums存放在set中便于查找。将nums元素转化为图的节点,对于每一个节点,在set中寻找其相邻元素,如果找到,则长度+1,并将其从set中移除

int longestConsecutive(vector<int>& nums)
{
unordered_set<int> set(nums.begin(), nums.end());
int len,n_copy,res=1;
for (int n:nums)
{
if (set.find(n) != set.end())
{
set.erase(n);
len = 1;
n_copy = n;
while (set.find(++n_copy) != set.end())
{
set.erase(n_copy);
len++;
}

n_copy = n;
while (set.find(--n_copy) != set.end())
{
set.erase(n_copy);
len++;
}
res = max(res, len);
}
}
return res;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode