leetcode中等128最长连续序列

Posted qq_40707462

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode中等128最长连续序列相关的知识,希望对你有一定的参考价值。

在这里插入图片描述
思路:时间复杂度o(n),不能sort

  • 定义一个哈希表,用于判断某个数是否存在哈希表中,存某个数所在子列的长度(只有端点的长度重要,别的无所谓)
  • 然后遍历数组,如果当前数num存在哈希表,跳过
  • 如果当前数num不存在哈希表中,那么查找num-1和num+1这两个数是不是在哈希表中,获取到左右边子列的长度

比如: num=5,1234 678都在哈希表中

此时哈希表中,1的位置和4存的值都是4(证明1或者4所在的连续长度是4),同理 6和8存的值都是3

5不在hash中,进入操作,看看4和6在不在哈希表内,如果在的话,一定是端点,此时长度=4+1+3 = 8

最后,更新当前最长连续串的端点,也就是1的位置(5-4),8的位置(5+3),更新长度为8

class Solution:
    def longestConsecutive(self, nums: List[int]) -> int:
        hash={}
        res=0
        for num in nums:
            if num not in hash:
            	#获取两端
                left=hash.get(num-1,0)
                right=hash.get(num+1,0)
				#计算长度
                cur=left+right+1
                res=max(res,cur)
				#更新端点
                hash[num]=1#随便存,表示出现过
                hash[num-left]=cur
                hash[num+right]=cur
        return res

以上是关于leetcode中等128最长连续序列的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode128. 最长连续序列

LeetCode 128. 最长连续序列

LeetCode 128. 最长连续序列

LeetCode 128. 最长连续序列c++/java详细题解

LeetCode第128题—最长连续序列—Python实现

leetcode 128:最长连续序列