[Leetcode] Longest Consecutive Sequence
来源:互联网 发布:java进销存软件源码 编辑:程序博客网 时间:2024/06/07 20:33
题目:
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).
0 0
- 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
- LeetCode-Longest Consecutive Sequence
- LeetCode - Longest Consecutive Sequence
- [LeetCode] longest consecutive sequence
- LeetCode | Longest Consecutive Sequence
- [leetcode]Longest Consecutive Sequence
- Ubuntu环境安装Gradle
- Blender点滴-11个小技巧
- {转载}——java守护线程
- 兔子饲料颗粒机
- Android Studio常用快捷键、Android Studio快捷键大全
- [Leetcode] Longest Consecutive Sequence
- Android自定义控件系列一:Android如何实现老版优酷客户端三级环形菜单
- 高仿糗事百科,完整版项目源码,带服务器部分
- ping命令源码获得
- document.createElement()的用法
- 安卓自定义对话框及The specified child already has a child问题
- Ubuntu 14.04 Eclipse for Android 集成离线安装
- jvm参数设置大全
- kill -9 杀掉oracle所有进程却不能启动和连接数据库的解决办法!