【leetcode】(python)128. Longest Consecutive Sequence最长的连续序列

最长的连续序列

  • Description
  • Example
  • 题意
  • 解题思路
    • code

128. Longest Consecutive Sequence Hard

Description

Given an unsorted array of integers, find the length of the longest consecutive elements sequence.

Your algorithm should run in O(n) complexity.

Example

Input: [100, 4, 200, 1, 3, 2]
Output: 4
Explanation: The longest consecutive elements sequence is [1, 2, 3, 4]. Therefore its length is 4.

题意

求一数组中的最长连续序列的长度

解题思路

遍历数组,然后判断其左右-1,+1的数是否在数组中。

code

class Solution(object):
    def longestConsecutive(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        dic = {num:False for num in nums}
        res = 0
        
        for i in dic:
            if dic[i] == False:
                cur, left = i-1, 0
                while cur in dic:
                    dic[cur] = True
                    left += 1
                    cur -= 1
                cur, right = i+1, 0
                while cur in dic:
                    dic[cur] = True
                    right += 1
                    cur += 1
                res = max(res,left+1+right)
        return res

你可能感兴趣的:(LeetCode)