Longest Consecutive Sequence
来源:互联网 发布:studio美图软件 编辑:程序博客网 时间:2024/06/11 17:09
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.
由于时间复杂度要求为O(n),所以只能使用容器map的find和erase。否则可以排序之后按顺序查找,但是那样的时间复杂度为O(n2)。
代码如下:
class Solution {public: int longestConsecutive(vector<int> &num) { map<int, int> hmap; hmap.clear(); int n = num.size(); for(int i=0; i<n; i++) { hmap.insert(pair<int, int>(num[i], i)); } int result=0, cnt=0; map<int, int>::iterator it; for(int i=0; i<num.size(); i++) { int cur = num[i]; it = hmap.find(num[i]); cnt++; if(it!=hmap.end()){ map<int, int>::iterator iter; while(1) { iter = hmap.find(++cur); if(iter==hmap.end()) break; cnt++; hmap.erase(iter); } cur=num[i]; while(1) { iter = hmap.find(--cur); if(iter==hmap.end()) break; cnt++; hmap.erase(iter); } if(result<cnt) result = cnt; cnt=0; } cnt=0; } return result; }};
0 0
- Longest Consecutive Sequence
- Longest Consecutive Sequence
- Leetcode : Longest Consecutive Sequence
- [Leetcode] Longest Consecutive Sequence
- longest consecutive elements sequence
- [leetcode] longest consecutive sequence
- Longest Consecutive Sequence
- Longest Consecutive Sequence
- 【leetcode】Longest Consecutive Sequence
- LeetCode - Longest Consecutive Sequence
- [LeetCode]Longest Consecutive Sequence
- leetcode:Longest Consecutive Sequence
- Longest Consecutive Sequence
- Longest Consecutive Sequence
- [Leetcode]Longest Consecutive Sequence
- [leetcode]Longest Consecutive Sequence
- Longest Consecutive Sequence
- Longest Consecutive Sequence
- 如何学习Java_不走弯路,就是捷径
- HDU 3308 LCIS(线段树区间合并)
- 杭电1016 同时也是 UVA524
- GitHub上让人吓尿的效果Android
- MarkDown 学习笔记(二)
- Longest Consecutive Sequence
- Swift 语言基础(1)-The basics
- mac上用homebrew安装并启动postgresql数据库
- 全排列和汉诺塔
- C++继承类的类型
- Service之startservice与bindservice
- 用C/C++实现代码的动态修改(SMC)
- 单例设计模式
- CVTE宣讲会之后