leetcode|128:最长连续序列

104 阅读1分钟

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;
}

思路分析:

  1. 使用集合去重:将所有数字放入一个集合numSet中,这样可以快速查找某个数字是否存在
  2. 寻找序列起点:遍历集合中的每个数字,对于每个数字,如果没有它的前驱(即num - 1不在集合中),则说明它可能是一个新的序列起点
  3. 扩展序列:从当前数字开始,一直检查下一个数字是否存在于集合中,并更新序列长度
  4. 最后返回最长的序列长度