128.最长连续序列
128 最长连续序列
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。
请你设计并实现时间复杂度为 O(n) 的算法解决此问题。
时间复杂度o(n)就意味着不能使用sorted遍历。因为排序的时间复杂度是o(nlogn)。
所以这就意味着一定要使用哈希表来完成。
思路很简单:
首先必须要转成set去重,比如如果样例中是[1,1,1,2,3,4],对于每个1都需要遍历一个O(n)的循环。
然后我们需要找到这个序列的起点和终点,我们从set里面抓一个出来,之后用哈希表找比这个数小1的数是否存在,直到找到这个数所在序列的最小数。
然后再重新递增检测,找到该序列中存在的最大的数。两者相减就可以得到这个序列长度。
序列长度一直取max就可以得到最长的连续序列长度了。

