Leetcode Longest Consecutive Sequence
来源:互联网 发布:arp攻击软件使用方法 编辑:程序博客网 时间:2024/06/03 16:57
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.
代码如下:
class Solution {public: int longestConsecutive(vector<int> &num) { map<int,int> hashMap; int result = 0; for(int i=0;i<num.size();i++) { if(hashMap.find(num[i]) == hashMap.end()) { int left=0,right = 0; if(hashMap.find(num[i]-1) == hashMap.end()) left = 0; else left = hashMap[num[i]-1]; if(hashMap.find(num[i]+1) == hashMap.end()) right = 0; else right = hashMap[num[i]+1]; hashMap[num[i]] = right+left+1; result = max(result,right+left+1); hashMap[num[i]-left] = right+left+1; hashMap[num[i]+right] = left+right+1; } else continue; } return result; }};
对数据结构进行修改,代码如下:
class Solution {public: int longestConsecutive(vector<int> &num) { unordered_map<int,int> hashMap; int result = 0; for(int i=0;i<num.size();i++) { if(hashMap.find(num[i]) == hashMap.end()) { int left=0,right = 0; if(hashMap.find(num[i]-1) == hashMap.end()) left = 0; else left = hashMap[num[i]-1]; if(hashMap.find(num[i]+1) == hashMap.end()) right = 0; else right = hashMap[num[i]+1]; hashMap[num[i]] = right+left+1; result = max(result,right+left+1); hashMap[num[i]-left] = right+left+1; hashMap[num[i]+right] = left+right+1; } else continue; } return result; }};
另一种方法,就是先排序然后求连续子序列即可,代码如下:
class Solution {public: int longestConsecutive(vector<int>& nums) { if (nums.size() == 0) { return 0; } sort(nums.begin(), nums.end()); int len = 0; int temp = 1; for (int i = 1; i < nums.size(); i++) { if (nums[i] == nums[i - 1]) continue; if (nums[i] == nums[i - 1] + 1) { temp++; } else { len = max(len, temp); temp = 1; } } len = max(len, temp); return len; }};
阅读全文
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
- 微信浏览器禁止页面下拉查看网址(不影响页面内部scroll)
- Cocoa多线程编程之 block 与 dispatch quene
- C# DataTable中Compute方法用法集锦(数值/字符串/运算符/表等操作)(转载)
- UITableViewCell的4种显示格式
- objective-c 中随机数的用法 (3种:arc4random() 、random()、CCRANDOM_0_1() )
- Leetcode Longest Consecutive Sequence
- arc方法中局部变量viewcontroller无法获得相应回调事件( exc_bad_access)
- ORA-28000: the account is locked解决方案
- 纯HTML项目部署在NGINX,不用TOMCAT
- ios5中UIViewController addChildViewController等新方法
- loadrunner
- mysql 1129 错误Host is blocked because of many connection errors; unblock with 'mysqladmin flush-host
- loadNibNamed
- .net + EF EasyUI 增删改查