leetcode 128. 最长连续序列

一.题目描述

      给定一个未排序的整数数组,找出最长连续序列的长度,要求算法的时间复杂度为 O(n)

      题目链接:https://leetcode-cn.com/problems/longest-consecutive-sequence/

二.示例

三.算法分析

          先对列表进行去重,减少后续查找花费时间,然后遍历去重后的列表,检查该元素比其更小的值是否存在,可由比其更小的值找到最大序列值,找到某一序列的最小值并开始查找其最长序列,最后将不同序列的长度进行比较则可取最大序列长度。

四.算法实现

class Solution:
    def longestConsecutive(self, nums: List[int]) -> int:
        #列表去重
        list_nums = list(set(nums))
        #存储最大序列值
        max_res = 0
        #遍历列表
        for i in nums:
            #检查该元素比其更小的值是否存在,可由比其更小的值找到最大序列值
            if i-1 not in nums:
                j = i +1
                #表示从该值开始寻找最大序列
                while j in nums:
                    j += 1
                #将不同的最大序列值进行比较取最大
                max_res = max(max_res, j - i)
        return max_res
    

五.执行结果

leetcode 128. 最长连续序列_第1张图片

你可能感兴趣的:(leetcode)