สมมติว่าเรามีรายการช่วง โดยแต่ละช่วงเป็นแบบ [start, end] แทนเวลาเริ่มต้นและสิ้นสุดของช่วง (รวม) เราต้องหาการทับซ้อนของพวกมัน คือช่วงที่อยู่ภายในช่วงที่กำหนดทั้งหมด
ตัวอย่าง
หากอินพุตคือ [[10, 110], [20, 60], [25, 75]] ผลลัพธ์จะเป็น [25, 60]
ขั้นตอนการแก้ปัญหา
start, end:= ช่วงหลังจากลบองค์ประกอบสุดท้ายออกจากรายการintervals- ในขณะที่
intervalsไม่ว่าง:start_temp, end_temp:= ช่วงหลังจากลบองค์ประกอบสุดท้ายออกจากรายการintervalsstart:= ค่าสูงสุดของstart, start_tempend:= ค่าต่ำสุดของend, end_temp
- คืนค่าช่วง
[start, end]
การใช้งาน
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]