【力扣】最长连续序列-哈希表

24 阅读1分钟

最长连续序列-哈希表

Problem: 128. 最长连续序列

思路

你选用何种方法解题?

哈希表

解题过程

这些方法具体怎么运用?

遍历数组,存到哈希表中 遍历数组,判断这个数前一个数在不在哈希表里,不再我们就向前遍历,存在就len+1 这样我们就不会重复遍历了,比如数列2,3,4;只有2会进行遍历,因为3和4的前一个数都在哈希表里,不会重复遍历 最后找到最长的len即可

Code

function longestConsecutive(nums: number[]): number {
    let num_set:Set<number> = new Set();
    for(const num of nums){
        num_set.add(num);
    }

    let longestStreak = 0;

    for (const num of num_set) {
        if(!num_set.has(num-1)){
            let currentNum = num;
            let currentStreak = 1;

            while (num_set.has(currentNum + 1)){
                currentNum +=1 ;
                currentStreak += 1;
            }

            longestStreak = Math.max(longestStreak,currentStreak);
        }
    }
    return longestStreak;
};