100-3 最长连续序列
要求在未排序的整数数组中找到最长连续元素的长度。【题目地址】
示例:
输入: nums = [100,4,200,1,3,2]
输出: 4
解释: 最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。
const searchLong = function(nums){
const numSet = new Set(nums);
let maxLength = 0;
for(let num of numSet){
if(!numSet.has(num-1)){
let currentNum = num
let currentLen = 1
while(numSet.has(currentNum +1)){
currentNum +=1;
currentLen +=1
}
maxLength = Math.max(currentLen,maxLength)
}
}
return maxLength;
}
思路分析:
- 使用集合去重:将所有数字放入一个集合numSet中,这样可以快速查找某个数字是否存在
- 寻找序列起点:遍历集合中的每个数字,对于每个数字,如果没有它的前驱(即num - 1不在集合中),则说明它可能是一个新的序列起点
- 扩展序列:从当前数字开始,一直检查下一个数字是否存在于集合中,并更新序列长度
- 最后返回最长的序列长度