Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหาจำนวนกล่องที่ยาวที่สุดใน Python?


สมมติว่าเรามีรายการกล่อง ที่นี่แต่ละรายการมีสองค่า [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