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
|
||
|
}
|