golang
用map记录连续序列的每个数字,键值为连续序列的长度,只关心头和尾的保存长度
func longestConsecutive(nums []int) int {
res := 0
m := make(map[int]int)
for i := 0; i < len(nums); i++ {
if _, ok := m[nums[i]]; ok {
continue
}
l := m[nums[i]-1]
r := m[nums[i]+1]
sum := l + r + 1
m[nums[i]] = sum
m[nums[i]-l] = sum
m[nums[i]+r] = sum
if sum > res {
res = sum
}
}
return res
}