Python程式:查詢構成最長鏈的盒子數量?
假設我們有一組盒子,每個條目都有兩個值 [起始,結束] (起始 < 結束)。如果一個盒子的結束值等於另一個盒子的起始值,則可以連線這兩個盒子。我們必須找到最長盒子鏈的長度。
因此,如果輸入類似於 blocks = [ [4, 5], [5, 6], [4, 8], [1, 2], [2, 4] ],則輸出為 4,因為我們可以形成鏈: [1, 2], [2, 4], [4, 5], [5, 6]
為了解決這個問題,我們將遵循以下步驟
如果盒子為空,則
返回 0
對盒子列表進行排序
dic := 一個空對映
對於 boxes 中的每個起始值 s 和結束值 e,執行以下操作:
dic[e] := dic[e] 和 dic[s] + 1 的最大值
返回 dic 所有值的列表的最大值
讓我們看看下面的實現,以便更好地理解
示例
import collections class Solution: def solve(self, boxes): if not boxes: return 0 boxes.sort() dic = collections.defaultdict(int) for s, e in boxes: dic[e] = max(dic[e], dic[s] + 1) return max(dic.values()) ob = Solution() boxes = [ [4, 5], [5, 6], [4, 8], [1, 2], [2, 4] ] print(ob.solve(boxes))
輸入
[[4, 5], [5, 6], [4, 8], [1, 2], [2, 4] ]
輸出
4
廣告