Skip to the content.

leetcode [128] 最长连续序列


Contact me:

Blog -> https://cugtyt.github.io/blog/index
Email -> cugtyt@qq.com
GitHub -> Cugtyt@GitHub


给定一个未排序的整数数组,找出最长连续序列的长度。

要求算法的时间复杂度为 O(n)。

示例:

输入: [100, 4, 200, 1, 3, 2]
输出: 4
解释: 最长连续序列是 [1, 2, 3, 4]。它的长度为 4。

来自题解:

hash保存每个值为端点的最大长度,查询当前值-1和+1的最大长度,设置他们的值为当前值的最大长度。

class Solution:
    def longestConsecutive(self, nums: List[int]) -> int:
        hash_dict = {}
        maxlen = 0
        for n in nums:
            if n not in hash_dict:
                left = hash_dict.get(n - 1, 0)
                right = hash_dict.get(n + 1, 0)
                current = left + right + 1
                maxlen = max(maxlen, current)
                hash_dict[n] = current
                hash_dict[n - left] = current
                hash_dict[n + right] = current
        return maxlen