1. 程式人生 > >【python/Hard/128】 Longest Consecutive Sequence

【python/Hard/128】 Longest Consecutive Sequence

題目

這裡寫圖片描述

基本思路

使用一個雜湊表(在Python中是字典dict資料型別)。 dict中的對映關係是{num: False for num in nums},這個表示nums中的x元素沒有被訪問過,如果被訪問過,則為True。 如果x沒有被訪問過,檢查x+1,x+2…,x-1,x-2是否在dict中,如果在dict中,就可以計數。 最後可以求得最大長度。

實現程式碼

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