思路:哈希 + 贪心
一个朴素的思路是:用数组构建哈希,枚举所有点x作为起点,循环地哈希查询x+1,x+2,...来寻找它的最长连续序列,一直到不存在x+k , 此时以x作为起点的长度就是k
来看一下这段代码:
#code-switcher
class Solution:
def longestConsecutive(self, nums):
P4002.最长连续序列
Leetcode 128.最长连续序列-原题链接
题目内容
给定一个未排序的整数数组nums,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。
请你设计并实现时间复杂度为O(n)的算法解决此问题。
输入描述
输入共两行。
-
第一行为一个整数n,代表数组nums的长度。
-
第二行为n个整数nums0,nums1,...,numsn−1,数字之间以空格分隔。
输出描述
输出一个整数,代表答案。
样例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
样例3
输入
4
1 0 1 2
输出
3
提示