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

ค้นหา Intersecting Intervals ใน Python


สมมติว่าเรามีรายการของช่วงเวลา โดยที่แต่ละช่วงเวลาเป็นเหมือน [เริ่มต้น สิ้นสุด] นี่คือการแทนเวลาเริ่มต้นและสิ้นสุดของช่วงเวลา (รวม) เราต้องหาจุดตัดของช่วงเวลานั้น นั่นคือ ช่วงเวลาที่อยู่ภายในช่วงเวลาที่กำหนดทั้งหมด

ดังนั้น หากอินพุตเป็น [[10, 110],[20, 60],[25, 75]] เอาต์พุตจะเป็น [25, 60]

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

  • เริ่ม, สิ้นสุด :=ช่วงหลังจากลบองค์ประกอบสุดท้ายออกจากรายการช่วงเวลา
  • ขณะที่เว้นช่วงไว้ ให้ทำ
    • start_temp, end_temp :=ช่วงหลังจากลบองค์ประกอบสุดท้ายจากรายการช่วงเวลา
    • start :=สูงสุด start, start_temp
    • end :=ต่ำสุด end, end_temp
  • ส่งกลับช่วงเวลา [เริ่ม, สิ้นสุด]

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

ตัวอย่าง

class Solution:
   def solve(self, intervals):
      start, end = intervals.pop()
      while intervals:
         start_temp, end_temp = intervals.pop()
         start = max(start, start_temp)
         end = min(end, end_temp)
      return [start, end]
ob = Solution()
intervals = [[10, 110],[20, 60],[25, 75]]
print(ob.solve(intervals))

อินพุต

[[10, 110],[20, 60],[25, 75]]

ผลลัพธ์

[25, 60]