[leetcode 128]Longest consecutive sequence
2016-06-04 10:21
429 查看
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.
问题:
给出一个未排序的整数数组,找出最长的连续元素序列的长度。如:
给出[100, 4, 200, 1, 3, 2],
最长的连续元素序列是[1, 2, 3, 4]。返回它的长度:4。
你的算法必须有O(n)的时间复杂度
思路:
哈希表法,每个元素只遍历一次,用该元素+1,-1,循环查找是否存在哈希表中。
**:在1,2,3,4中只需查找其中任意一个即可返回4, 不用遍历四次。
int longestConsecutiveSequence(vector<int>&nums) { unordered_map<int, bool>used; for (int i : nums) used[i] = false; int longest = 0; for (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(length, longest); } return longest; }
相关文章推荐
- LeetCode Top K Frequent Elements
- Android View 深度分析requestLayout、invalidate与postInvalidate
- UGUI射线穿透UI
- uva 1608 Non-boring sequences
- STL-priority_queue用法(重点: 升序,小根堆)
- TreeBuilder科学的树创建器
- Android总结Handler异步更新UI界面
- GUI中的事件绑定
- 特殊权限SUID等详解
- SPOJ DQUUERY (在线主席树 | 离线树状数组)
- EasyUI布局 高度自适应
- testNg+ant+jenkins之ant配置build.xml
- EasyUI datebox 日期选择范围
- 左式堆 斜堆 buildHeap
- Android UI 之居中绘制文本内容的正确方法——实现自定义一个TextView
- iOS开发学习笔记-UIScrollView的用法
- GUI图形用户接口的基本使用
- windows平台时间函数性能比较QueryPerformanceCounter,GetTickCount,ftime,time,GetLocalTime,GetSystemTimeAsFileTim
- UESTC 491 Tricks in Bits (暴力回溯 + 剪枝)
- trickyPriorityQueue