leetcode 128: Longest Consecutive Sequence
来源:互联网 发布:oracle sql优化 编辑:程序博客网 时间:2024/05/01 13:49
Use the unordered set which has the O(1) time complexity when accessing one number. The key here is to update the max only when I find one number is the left most number in one range.
class Solution {public: int longestConsecutive(vector<int>& nums) { unordered_set<int> set; for(int i=0;i<nums.size();i++) set.insert(nums[i]); int max=0; unordered_set<int>::iterator it; for(it=set.begin();it!=set.end();it++) { int num=*it; if(set.find(num-1)==set.end()) { while(set.find(num+1)!=set.end()) num++; if(num-*it+1>max) max=num-*it+1; } } return max; }};
Updated version. Find the maximum range for one number and erase all numbers visited.
class Solution {public: int longestConsecutive(vector<int>& nums) { unordered_set<int> numSet; int size=nums.size(); for(int i=0;i<size;i++) numSet.insert(nums[i]); unordered_set<int>::iterator it; int res=0; for(it=numSet.begin();it!=numSet.end();it++) { int l=*it,r=*it; while(numSet.find(l-1)!=numSet.end()) { numSet.erase(l-1); l--; } while(numSet.find(r+1)!=numSet.end()) { numSet.erase(r+1); r++; } if(r-l+1>res) res=r-l+1; } return res; }};
0 0
- Leetcode 128 Longest Consecutive Sequence
- LeetCode 128: Longest Consecutive Sequence
- LeetCode 128 Longest Consecutive Sequence
- LeetCode: Longest Consecutive Sequence [128]
- LeetCode 128 Longest Consecutive Sequence
- LeetCode(128)Longest Consecutive Sequence
- [leetcode 128] Longest Consecutive Sequence
- leetcode || 128、Longest Consecutive Sequence
- Longest Consecutive Sequence - LeetCode 128
- leetcode 128: Longest Consecutive Sequence
- leetcode 128:Longest Consecutive Sequence
- leetcode-128-Longest Consecutive Sequence
- [leetcode 128]Longest consecutive sequence
- Leetcode 128 Longest Consecutive Sequence
- LeetCode 128 Longest Consecutive Sequence
- [Leetcode] #128 Longest Consecutive Sequence
- 【leetcode 128】Longest Consecutive Sequence
- [Leetcode 128] Longest Consecutive Sequence
- Linux下的调试工具
- 104Maximum Depth of Binary Tree
- 求最小的k个数
- hdu 5131 Song Jiang's rank list(模拟)
- HDU 2871 Memory Control(线段树·区间合并·Vector)
- leetcode 128: Longest Consecutive Sequence
- uva 11795 状压dp
- typedef和#define究竟有什么区别?
- Android学习心得(13) --- Android代码混淆(1)
- 软件架构设计
- Valgrind简单用法
- 双向链表,定义一个节点,具有next、previous和data属性
- MFC修改菜单
- mongodb异常关闭后,再启动需要删除mongod.lock文件