Leetcode 128.最长连续序列(807,hot100)

0 阅读1分钟

题目

image.png

26年8月7日(首刷看解)

func longestConsecutive(nums []int) int {
    hash:=make(map[int]bool)
    for _,v:=range nums{
        hash[v]=true
    }
    res:=0
    for num:=range hash{
        if !hash[num-1]{
            length:=1
            for hash[num+length]{
                length++
            }
            res=max(res,length)//写在里层,不然length未定义
        }
    }
    return res
}

思路

哈希表

先用哈希表记录哪些数字为存在,

然后遍历哈希表,这里注意

哈希表的遍历是完全无序的,这道题难点就在这。

所以我们每次判断都是先判断当前num的前一个数字是否在哈希表内,如果不在说明这是一个新起点,然后用length连续记录直到断开。这样的判断方式还可以避免重复记录,例如前面记录过 ,1,2,3,4,就只会把1当做起点,其他的数字无法当做起点了。

然后再遍历的过程中维护最大值