0128:最长连续序列(★)
目录
题目
给定一个未排序的整数数组 nums
,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。
请你设计并实现时间复杂度为 O(n)
的算法解决此问题。
示例 1:
输入:nums = [100,4,200,1,3,2] 输出:4 解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。
示例 2:
输入:nums = [0,3,7,2,5,8,4,6,0,1] 输出:9
提示:
0 <= nums.length <= 105
-109 <= nums[i] <= 109
相似问题:
- 0298:二叉树最长连续序列
- 2177:找到和为给定整数的三个连续整数(1257 分)
- 2274:不含特殊楼层的最大连续楼层数(1332 分)
- 2414:最长的字母序连续子字符串的长度(1221 分)
- 3020:子集中元素的最大数量(1741 分)
分析
最简单的就是去重排序,再遍历即可。要求时间复杂度 O(n),有个巧妙的方法:
- 考虑找到每条序列的起点开始遍历
- 如果 x-1 不在 nums 中,x 就是起点
解答
|
|
91 ms