Giả sử chúng ta có một danh sách các hộp, ở đây mỗi mục nhập có hai giá trị [bắt đầu, kết thúc] (bắt đầu
Vì vậy, nếu đầu vào giống như các khối =[[4, 5], [5, 6], [4, 8], [1, 2], [2, 4]], thì đầu ra sẽ là 4, như chúng ta có thể tạo thành chuỗi:[1, 2], [2, 4], [4, 5], [5, 6]
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau:
-
nếu các hộp trống, thì
-
trả về 0
-
-
sắp xếp các hộp danh sách
-
dic:=một bản đồ trống
-
đối với mỗi chữ cái bắt đầu và chữ cái kết thúc trong các hộp, hãy thực hiện
-
dic [e]:=tối đa dic [e] và dic [s] + 1
-
-
trả về giá trị tối đa trong danh sách tất cả các giá trị của dic
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn:
Ví dụ
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))
Đầu vào
[[4, 5], [5, 6], [4, 8], [1, 2], [2, 4] ]
Đầu ra
4