2026-04-220

最长连续序列实现

题目

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。

js示例
输入: nums = [100,4,200,1,3,2] 输出: 4 解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。 示例 2: 输入: nums = [0,3,7,2,5,8,4,6,0,1] 输出: 9 示例 3: 输入: nums = [1,0,1,2] 输出: 3

实现

golang
func longestConsecutive(nums []int) int { if len(nums) == 0 { return 0 } // 1. 用 map 模拟 HashSet set := make(map[int]bool) for _, num := range nums { set[num] = true } longest := 0 // 2. 遍历每个数 for num := range set { // 3. 只有当 num-1 不存在,才作为起点 if !set[num-1] { currentNum := num currentLen := 1 // 4. 向后扩展 for set[currentNum+1] { currentNum++ currentLen++ } // 5. 更新最大长度 if currentLen > longest { longest = currentLen } } } return longest }

本文作者:曹子昂

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!