[Leetcode] Longest Consecutive Sequence
2014-10-24 10:33
253 查看
题目:
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.
思路:由于没有sort,又要求O(n)内完成,想到用hashmap实现。具体做法是把所有元素放到一个hashset中,从两边扩展。
总结:每个元素被插入一次,删除一次。复杂度为O(n).
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.
思路:由于没有sort,又要求O(n)内完成,想到用hashmap实现。具体做法是把所有元素放到一个hashset中,从两边扩展。
class Solution { public: int longestConsecutive(vector<int> &num) { int result = 0; unordered_set<int> num_set; for (int i = 0; i < (int)num.size(); ++i) { num_set.insert(num[i]); } while (!num_set.empty()) { int current = *num_set.begin(); //arbitrarily pick one num_set.erase(num_set.begin()); int len = 1; unordered_set<int>::iterator it; for (int i = current - 1; ; --i) { //expand to left it = num_set.find(i); if (it != num_set.end()) { len++; num_set.erase(it); } else { break; } } for (int i = current + 1; ; ++i) { //expand to right it = num_set.find(i); if (it != num_set.end()) { len++; num_set.erase(it); } else { break; } } result = result > len ? result : len; //update the length } return result; } };
总结:每个元素被插入一次,删除一次。复杂度为O(n).
相关文章推荐
- LeetCode Longest Consecutive Sequence
- LeetCode Longest Consecutive Sequence
- LeetCode - Longest Consecutive Sequence
- [Leetcode] Longest Consecutive Sequence
- Leetcode: Longest Consecutive Sequence
- LeetCode - Longest Consecutive Sequence
- LeetCode-Longest Consecutive Sequence
- 【leetcode】Longest Consecutive Sequence
- [Leetcode] Longest Consecutive Sequence
- leetCode_Longest Consecutive Sequence
- LeetCode----Longest Consecutive Sequence
- leetcode笔记:Longest Consecutive Sequence
- Leetcode Longest Consecutive Sequence
- 128.LeetCode Longest Consecutive Sequence(hard)[数组 排序 最长连续增长子序列]
- leetcode 105: Longest Consecutive Sequence
- [leetcode] Longest Consecutive Sequence
- Longest Consecutive Sequence--Leetcode(Java)
- LeetCode: Longest Consecutive Sequence 解题报告
- LeetCode - Longest Consecutive Sequence
- LEETCODE: Longest Consecutive Sequence