Python程式:查詢最長不重複子列表的長度


假設我們有一個名為nums的數字列表,我們需要找到其中所有元素都唯一的最大連續子列表的長度。

例如,如果輸入為nums = [6, 2, 4, 6, 3, 4, 5, 2],則輸出為5,因為最長的唯一元素列表是[6, 3, 4, 5, 2]。

為了解決這個問題,我們將遵循以下步驟:

  • head := 0,dct := 一個新的對映

  • max_dist := 0

  • 對於nums中的每個索引i和元素num,執行以下操作:

    • 如果num在dct中並且dct[num] >= head,則

      • head := dct[num] + 1

    • dct[num] := i

    • 如果i - head + 1 > max_dist,則

      • max_dist := i - head + 1

  • 返回max_dist

讓我們看下面的實現來更好地理解:

示例

線上演示

class Solution:
   def solve(self, nums):
      head = 0
      dct = {}
      max_dist = 0
      for i, num in enumerate(nums):
         if num in dct and dct[num] >= head:
            head = dct[num] + 1
         dct[num] = i
         if i - head + 1 > max_dist:
            max_dist = i - head + 1
   return max_dist
ob = Solution()
nums = [6, 2, 4, 6, 3, 4, 5, 2]
print(ob.solve(nums))

輸入

[6, 2, 4, 6, 3, 4, 5, 2]

輸出

5

更新於:2020年10月10日

328 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.