Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm số hộp tạo thành chuỗi dài nhất trong Python?

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