128. 最长连续序列

2023-05-17  本文已影响0人  MatrixZ

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

分析

class Solution:
    def longestConsecutive(self, nums: List[int]) -> int:
        # 哈希的好处在于可以寻找目标值的时候更加快一些
        # 所以可以把所有元素放到哈希集合中,遍历寻找该元素所能扩展的最大长度
        # 注意的点是只需要遍历窗口第一个数字即可,复杂度为o(n)
        
        num_set = set(nums)
        longest_len = 0
        for num in num_set:
            if num - 1 not in num_set:
                cur_longest_len = 1
                cur_num = num

                while cur_num + 1 in num_set:
                    cur_longest_len += 1
                    cur_num = cur_num + 1

                longest_len = max(cur_longest_len, longest_len)
        
        return longest_len
上一篇 下一篇

猜你喜欢

热点阅读