338 字
2 分钟
128. 最长连续序列
中等
给定一个未排序的整数数组 nums ,找出数字连续的最长序列**(不要求序列元素在原数组中连续)**的长度。
请你设计并实现时间复杂度为 O(n) 的算法解决此问题。
示例 1:
输入:nums = [100,4,200,1,3,2] 输出:4 解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。
首先哈希表用法忘记了 把nums放进哈希表去重 set=set(nums) 然后怎么判断是连续序列 set里面的数x 如果有x+1 存在就是有连续序列 如何判断一个数是不是一个连续序列的开头 如果x-1存在于序列中 说明不是开头 如果x-1不存在于序列中说明可能是开头 这样可以少判断一些数
写代码
自己写的问题: while应该放在if缩进下面 就是判断完是否是开头再开始判断连续序列 ans更新也放在if缩进下面 哎这个缩进确实总是忘记 while条件写错了,应该是判断current_num+1在不在哈希表中
总结:个人感觉思路挺简单,能想到哈希表可以去重,但是想不到怎么更好的判断连续序列,看了答案才想到