leetcode Longest Consecutive Sequence
2017-12-24 09:40
363 查看
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.
解题方法:
维护一个set,首先将vector中的所有元素插到set中。然后遍历vector中的所有元素,如果在set中能找到,则接着找比这个元素连续小的数,直到找不到为止,同时页找比这个元素连续大的数,直到找不到为止。这样这个与这个元素构成连续序列的大小就是最大的减最小的减一。在找到连续序列的最大值就好了。代码详情:
class Solution {public:
int longestConsecutive(vector<int>& nums) {
int result = 0;
set<int> s;
for (int i = 0; i < nums.size(); i++) {
s.insert(nums[i]);
}
for (int i = 0; i < nums.size(); i++) {
if (!s.count(nums[i])) continue;
s.erase(nums[i]);
int pre = nums[i]-1;
int next = nums[i]+1;
while (s.count(pre)) {
s.erase(pre);
pre--;
}
while (s.count(next)) {
s.erase(next);
next++;
}
result = max(result, next-pre-1);
}
return result;
}
};
相关文章推荐
- leetcode 105: Longest Consecutive Sequence
- LeetCode(Longest Consecutive Sequence ) 最长连续序列
- Longest Consecutive Sequence - LeetCode 128
- LeetCode--Longest Consecutive Sequence(最长连续序列)Python
- leetcode_c++: Longest Consecutive Sequence(128)
- [LeetCode#128]Longest Consecutive Sequence
- [leetcode]Longest Consecutive Sequence
- 【Leetcode】Longest Consecutive Sequence
- leetcode Longest Consecutive Sequence
- leetcode128~Longest Consecutive Sequence
- [LeetCode]Binary Tree Longest Consecutive Sequence
- LeetCode – Refresh – Longest Consecutive Sequence
- LeetCode-Longest Consecutive Sequence
- 【Leetcode】Longest Consecutive Sequence
- LeetCode128:Longest Consecutive Sequence
- LeetCode-Longest Consecutive Sequence
- LeetCode:Longest Consecutive Sequence
- LeetCode Longest Consecutive Sequence
- 【leetcode刷题笔记】Longest Consecutive Sequence
- [LeetCode] Longest Consecutive Sequence