LeetCode 128. 最长连续序列(Golang)


给定一个未排序的整数数组,找出最长连续序列的长度。

要求算法的时间复杂度为 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)))
}

文章作者: Jack Li
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Jack Li !
评论
  目录