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