题目
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当做起点,其他的数字无法当做起点了。
然后再遍历的过程中维护最大值