31 lines
463 B
Go
31 lines
463 B
Go
package main
|
|
|
|
func longestConsecutive(nums []int) (max int) {
|
|
exists := make(map[int]bool, len(nums))
|
|
for _, n := range nums {
|
|
exists[n] = true
|
|
}
|
|
done := make(map[int]bool, len(nums))
|
|
for _, n := range nums {
|
|
if _, ok := done[n]; !ok {
|
|
done[n] = true
|
|
l := 1
|
|
for exists[n+1] {
|
|
l++
|
|
n++
|
|
done[n] = true
|
|
}
|
|
n -= l - 1
|
|
for exists[n-1] {
|
|
l++
|
|
n--
|
|
done[n] = true
|
|
}
|
|
if l > max {
|
|
max = l
|
|
}
|
|
}
|
|
}
|
|
return max
|
|
}
|