128.最长连续序列

128 最长连续序列

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

时间复杂度o(n)就意味着不能使用sorted遍历。因为排序的时间复杂度是o(nlogn)。

所以这就意味着一定要使用哈希表来完成。

思路很简单:

首先必须要转成set去重,比如如果样例中是[1,1,1,2,3,4],对于每个1都需要遍历一个O(n)的循环。

然后我们需要找到这个序列的起点和终点,我们从set里面抓一个出来,之后用哈希表找比这个数小1的数是否存在,直到找到这个数所在序列的最小数。

然后再重新递增检测,找到该序列中存在的最大的数。两者相减就可以得到这个序列长度。

序列长度一直取max就可以得到最长的连续序列长度了。

jTjorfrhcv.png

explorer_pgRUbPQJ5O.png