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

leetcode---longest-consecutive-sequence---数组

2017-12-25 20:39 633 查看
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)
{
int n = num.size();
if(n == 0)
return 0;

set<int> s;
for(int i=0; i<n; i++)
s.insert(num[i]);

int max = 0;

while(!s.empty())
{
int len = 1;
set<int>::iterator it;
it = s.begin();
int tmp = *it;

int low = (*it) - 1;
while(s.count(low))
{
s.erase(low);
--low;
++len;
}

int high = (*it) + 1;
while(s.count(high))
{
s.erase(high);
++high;
++len;
}

s.erase(tmp);

if(len > max)
max = len;
}

return max;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: