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

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

示例:

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-consecutive-sequence
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution:
    def longestConsecutive(self, nums: List[int]) -> int:
        if not nums:
            return 0
        s = set(nums)
        maxlen = 0
        for num in s:
            cur_len = 1
            #取出set的最小值
            if num-1 in s:
                continue
            while num+1 in s:
                num = num+1
                #计算当前的长度
                cur_len+=1
                #比较当前长度与之前
            maxlen = max(maxlen,cur_len)
        return maxlen

 

posted on 2020-06-06 08:34  topass123  阅读(170)  评论(0编辑  收藏  举报