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

โปรแกรมที่จะรวมช่วงเวลาและเรียงลำดับจากน้อยไปมากใน Python


สมมติว่าเรามีช่วงรายการ เราต้องหาการรวมกันของมันตามลำดับการเรียงลำดับ

ดังนั้น หากอินพุตเป็น inv =[[2, 5],[4, 10],[20, 25]] ผลลัพธ์จะเป็น [[2, 10], [20, 25]]

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • เรียงลำดับรายการช่วงเวลา
  • ans :=รายการใหม่
  • สำหรับการเริ่มต้นและสิ้นสุดแต่ละครั้ง (s, e) ในช่วงเวลา ให้ทำ
    • ถ้า ans และ s <=เวลาสิ้นสุดของช่วงสุดท้ายของ ans แล้ว
      • เวลาสิ้นสุดของช่วงสุดท้ายของ ans :=สูงสุดของ e และเวลาสิ้นสุดของช่วงสุดท้ายของ ans
    • มิฉะนั้น
      • ใส่ช่วง [s, e] เป็น ans
  • คืนสินค้า

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

ตัวอย่าง

class Solution:
   def solve(self, intervals):
      intervals.sort()
      ans = []
      for s, e in intervals:
         if ans and s <= ans[-1][1]:
            ans[-1][1] = max(ans[-1][1], e)
         else:
            ans.append([s, e])
      return ans
ob = Solution()
inv = [[2, 5],[4, 10],[20, 25]]
print(ob.solve(inv))

อินพุต

[[2, 5],[4, 10],[20, 25]]

ผลลัพธ์

[[2, 10], [20, 25]]