题目地址:链接
题目描述: 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。请你设计并实现时间复杂度为 O(n) 的算法解决此问题。
示例输出:
输入:nums = [100,4,200,1,3,2]
输出:4
解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。
哈希表
思路: 使用集合存储nums,遍历集合时,判断是否有x - 1,如果有则跳过,直到没有x-1,此时通过集合判断是否能到达y。
var longestConsecutive = function(nums) {
let ans = 0;
const st = new Set(nums);
for(const x of st) {
if(st.has(x - 1)) {
continue;
}
let y = x + 1;
while(st.has(y)) {
y ++;
}
ans = Math.max(ans, y - x);
}
return ans
};
8万+

被折叠的 条评论
为什么被折叠?



