Longest Consecutive Sequence
来源:互联网 发布:淘宝代销不赚钱 编辑:程序博客网 时间:2024/06/15 18:38
问题来源
问题描述
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)的限制,问题的难点也在于此。我们可以有这样一种方法:遍历此数组,假设检索的当前元素为n,我们每次都检索 n-1 是否在此数组。这里存在的一个问题是,假如我们使用数组进行检索,那么算法的复杂度仍然为 O(n^2)。因此,我们使用unodered_set容器来存放元素(不适用set的原因是剔除其排序复杂度的影响)。假如 n-1 不在数组中,此时我们便开始检索 从n开始的连续元素数目。最终得到结果。需要解释的是,unordered_set的查找操作是可以在常数时间内完成的。
解决代码
class Solution {public: int longestConsecutive(vector<int>& nums) { unordered_set<int> sto(nums.begin(), nums.end()); int r = 0; for (auto ele : nums) { if (sto.find(ele-1) == sto.end()) { int t = 0; while (sto.find(ele++) != sto.end()) t++; r = max(r, t); } } return r; }};
阅读全文
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
- 腾讯2017秋招笔试编程题
- python 多进程分析
- Cloud Foundry
- python3 字符串所有方法
- 飞行前的准备工作
- Longest Consecutive Sequence
- Java对象克隆
- 51talk-4 I'm not alone here
- 例子---PHP与Form表单之一
- Oracle12c安装后忘记用户名和密码可通过如下方法解决:
- 将a标签的下划线去掉的方法
- hackerrank Most Common
- 二叉树的遍历
- caioj 练习题 1051高密度加法