Longest Consecutive Sequence
2017-05-04 10:18
267 查看
Longest Consecutive Sequence
Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
For example,
Given
The longest consecutive elements sequence is
Your algorithm should run in O(n) complexity.
解析:
若是连续的序列那么用该序列中任意一个数字都能找到该序列,那么遍历每个元素,找每个元素的序列,并把经过的元素都置为已访问,下次不再遍历这些元素。
代码:
class Solution {
public:
int longestConsecutive(vector<int>& nums) {
unordered_map<int,int>m;
for (int i=0; i<nums.size(); i++)
{
m[nums[i]]=1;
}
int ans=0;
int tempans=0;
for (int i=0; i<nums.size(); i++)
{
tempans=1;
if (m.count(nums[i])&&m[nums[i]])
{
m[nums[i]]=0;
int left=nums[i]-1;
while (m.count(left)&&m[left])
{
m[left--]=0;
tempans++;
}
int right=nums[i]+1;
while(m.count(right)&&m[right])
{
m[right++]=0;
tempans++;
}
}
if (ans<tempans)
{
ans=tempans;
}
}
return ans;
}
};
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) {
unordered_map<int,int>m;
for (int i=0; i<nums.size(); i++)
{
m[nums[i]]=1;
}
int ans=0;
int tempans=0;
for (int i=0; i<nums.size(); i++)
{
tempans=1;
if (m.count(nums[i])&&m[nums[i]])
{
m[nums[i]]=0;
int left=nums[i]-1;
while (m.count(left)&&m[left])
{
m[left--]=0;
tempans++;
}
int right=nums[i]+1;
while(m.count(right)&&m[right])
{
m[right++]=0;
tempans++;
}
}
if (ans<tempans)
{
ans=tempans;
}
}
return ans;
}
};
相关文章推荐
- 6: Longest Consecutive Sequence
- [LeetCode]Longest Consecutive Sequence
- [leetcode]Longest Consecutive Sequence
- Binary Tree Longest Consecutive Sequence
- leetcode -- Longest Consecutive Sequence
- LeetCode-Longest Consecutive Sequence
- [leetcode]Longest Consecutive Sequence
- leetcode_question_128 Longest Consecutive Sequence
- 【LeetCode】Longest Consecutive Sequence
- Longest Consecutive Sequence [LeetCode]
- Leetcode: Longest Consecutive Sequence
- [LeetCode] Binary Tree Longest Consecutive Sequence II 二叉树最长连续序列之二
- LeetCode OJ:Longest Consecutive Sequence
- leetcode 298: Binary Tree Longest Consecutive Sequence
- 【LeetCode从零单刷】Longest Consecutive Sequence
- Longest Consecutive Sequence
- 【leetcode】longest-consecutive-sequence
- leetcode之Longest Consecutive Sequence
- 128. Longest Consecutive Sequence
- Leetcode 298 Binary Tree Longest Consecutive Sequence