CodeACM
HOT 100 · 哈希 · LC 128

最长连续序列:ACM 模式刷题

按标准输入读取测试数据,输出结果后可在 CodeACM 在线运行和提交。

题目描述

给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。

请你设计并实现时间复杂度为 O(n) 的算法解决此问题。

输入格式

第一行包含一个整数 n,表示数组长度。

当 n > 0 时,第二行包含 n 个整数 nums[0], nums[1], …, nums[n-1],相邻数字以空格分隔;当 n = 0 时,不再输入第二行。

输出格式

输出一个整数,表示最长连续整数序列的长度。空数组的答案为 0。

数据范围

  • 0 ≤ n ≤ 10⁵
  • −10⁹ ≤ nums[i] ≤ 10⁹
  • 数组中可能包含重复元素

公开样例

样例 1

输入

6
100 4 200 1 3 2

输出

4

最长连续序列为 1、2、3、4,长度为 4。

样例 2

输入

10
0 3 7 2 5 8 4 6 0 1

输出

9

最长连续序列为 0 到 8,重复出现的 0 不会增加序列长度。

练习建议

先根据输入输出格式写出可运行程序,再用公开样例检查结果;遇到边界情况时,补充自测用例后提交。