给定一个未排序的整数数组,找出最长连续序列的长度。
要求算法的时间复杂度为 O(n)。
示例:
输入: [100, 4, 200, 1, 3, 2]
输出: 4
解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。
func longestConsecutive(nums []int) int {
if len(nums) <= 1 {
return len(nums)
}
sort.Ints(nums)
length := 1
leng := 1
first := nums[0]
for i := 1; i < len(nums); i++ {
if nums[i] == first {
continue
}
if nums[i] == first+1 {
first = nums[i]
leng++
} else {
if leng > length {
length = leng
}
first = nums[i]
leng = 1
}
}
return int(math.Max(float64(length), float64(leng)))
}