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

leetcode.128. Longest Consecutive Sequence

2016-05-24 11:19 453 查看
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>& nums) {
int ret = 0;
unordered_map<int, bool> m;
for(int i = 0; i < nums.size(); i ++)
m[nums[i]] = false;

for(int i = 0; i < nums.size(); i ++)
{
if(m[nums[i]] == false)
{
int cur = 1;
int left = nums[i]-1;
while(m.find(left) != m.end() && m[left] == false && left >= INT_MIN)
{
m[left] = true;
cur ++;
left --;
}
int right = nums[i]+1;
while(m.find(right) != m.end() && m[right] == false && right <= INT_MAX)
{
m[right] = true;
cur ++;
right ++;
}
ret = max(ret, cur);
}
}
return ret;

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