สมมติว่าเรามีช่วงรายการ เราต้องหาการรวมกันของมันตามลำดับการเรียงลำดับ
ดังนั้น หากอินพุตเป็น inv =[[2, 5],[4, 10],[20, 25]] ผลลัพธ์จะเป็น [[2, 10], [20, 25]]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- เรียงลำดับรายการช่วงเวลา
- ans :=รายการใหม่
- สำหรับการเริ่มต้นและสิ้นสุดแต่ละครั้ง (s, e) ในช่วงเวลา ให้ทำ
- ถ้า ans และ s <=เวลาสิ้นสุดของช่วงสุดท้ายของ ans แล้ว
- เวลาสิ้นสุดของช่วงสุดท้ายของ ans :=สูงสุดของ e และเวลาสิ้นสุดของช่วงสุดท้ายของ ans
- มิฉะนั้น
- ใส่ช่วง [s, e] เป็น ans
- ถ้า ans และ s <=เวลาสิ้นสุดของช่วงสุดท้ายของ 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]]