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 }