LintCode_124 Longest Consecutive Sequence
来源:互联网 发布:政府大数据应用案例 编辑:程序博客网 时间:2024/05/16 00:40
Given an unsorted array of integers, find the length of the longest consecutive elements sequence.
Clarification
Your algorithm should run in O(n) complexity.
Example
如果用排序算法,果断超时;Given [100, 4, 200, 1, 3, 2]
,
The longest consecutive elements sequence is [1, 2, 3, 4]
. Return its length: 4
.
思路是这样的:对于每一个数,先左找连续的数,再右找连续的数, 然后把长度加起来。
查找是用的hash_map来实现。
但是此种方法会退化成O(n^2);
优化一下发现;对于先处理的4来说, 3,2,1都是同一个序列,所以不用重复计算,所以要把查找过的都删除。
class Solution {public: /** * @param nums: A list of integers * @return an integer */ int longestConsecutive(vector<int> &nums) { // write you code here unordered_set<int> set; for (int i = 0; i < nums.size(); i++) { set.insert(nums[i]); } int max_len = 0; for (int i = 0; i < nums.size(); i++) { int left_len = 0; int right_len = 0; int mid = nums[i]; while (set.find(mid - 1) != set.end()) { left_len++; mid--; set.erase(mid); } mid = nums[i]; while (set.find(mid + 1) != set.end()) { right_len++; mid++; set.erase(mid); } max_len = max(max_len, left_len + 1 + right_len); } return max_len; }};
0 0
- LintCode_124 Longest Consecutive Sequence
- 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
- PHP的PSR规范中文版
- eclipse 安装
- eclipse 安装node js 调试环境
- eclipse安装 环境变量配置
- eclipse 汉化
- LintCode_124 Longest Consecutive Sequence
- 智力抢答器
- First_day
- 9.7 电机控制程序基础
- 9.8 实用的电机控制程序
- 9.9 单片机蜂鸣器
- 10.1 单片机数字秒表程序
- 10.2 PWM的原理与控制程序
- 10.3 单片机交通灯实例