สมมติว่าเรามีรายการกล่อง ที่นี่แต่ละรายการมีสองค่า [start, end] (start
ดังนั้นหากอินพุตเป็นเหมือนบล็อก =[ [4, 5], [5, 6], [4, 8], [1, 2], [2, 4] ] ผลลัพธ์จะเป็น 4 ตามที่เรา สามารถสร้างห่วงโซ่ได้:[1, 2], [2, 4], [4, 5], [5, 6]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้:
-
ถ้ากล่องว่างก็
-
คืนค่า 0
-
-
เรียงลำดับกล่องรายการ
-
dic :=แผนที่ว่างเปล่า
-
สำหรับแต่ละการเริ่มต้นและสิ้นสุด 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