6: Longest Consecutive Sequence
2017-02-15 23:13
375 查看
注:本题的解法思想及参考的代码来自于https://github.com/soulmachine/leetcode#leetcode题解
题目:
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.
解题思路:用一个哈希表
解法代码如下:
题目:
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.
解题思路:用一个哈希表
unordered_map<int, bool> used记录每个元素是否使用,对每个元素,以该元素为中心,往左右扩张,直到不连续为止,记录下最长的长度;
解法代码如下:
//寻找未排序数组的最长序列长度 //时间复杂度O(n), 空间复杂度O(n) class Solution { public: int longestConsecutive(const vector<int>& nums) { unordered_map<int, bool> used; for (const auto& i : nums) used[i] = false; int longest = 0; for (const auto& i : nums) { if (used[i]) continue; int length = 1; used[i] = true; for (int j = i + 1; used.find(j) != used.end(); ++j) { used[j] = true; ++length; } for (int j = i - 1; used.find(j) != used.end(); --j) { used[j] = true; ++length; } longest = max(longest, length); } } };
相关文章推荐
- 128. Longest Consecutive Sequence
- Longest Consecutive Sequence结题报告
- [LeetCode]128 Longest Consecutive Sequence
- Longest Consecutive Sequence
- [LintCode] 619 Binary Tree Longest Consecutive Sequence III 二叉树最长连续序列 III
- LeetCode Longest Consecutive Sequence
- 【哈希表】Longest Consecutive Sequence
- 298. Binary Tree Longest Consecutive Sequence
- 【leetcode】Longest Consecutive Sequence
- leetcode:Longest Consecutive Sequence
- Longest Consecutive Sequence问题
- Leetcode-Longest Consecutive Sequence
- Longest Consecutive Sequence
- Longest Consecutive Sequence
- Longest Consecutive Sequence
- Leetcode: Binary Tree Longest Consecutive Sequence
- leetcode-Longest Consecutive Sequence(2014.3.31)
- leetcode: Longest Consecutive Sequence
- [leetcode] Longest Consecutive Sequence
- [leetcode]Longest Consecutive Sequence