สมมติว่าเราได้รับชุดของช่วงเวลาที่ประกอบด้วยค่า (a,b) โดยที่ a หมายถึงเวลาเริ่มต้นและ b หมายถึงเวลาสิ้นสุดของเหตุการณ์ งานของเราคือตรวจสอบว่าช่วงเวลาเหล่านี้ทับซ้อนช่วงเวลาอื่นในชุดนี้หรือไม่ หากช่วงเวลาใดคาบเกี่ยวกัน เราจะคืนค่าผลลัพธ์เป็น True ไม่เช่นนั้นเราจะคืนค่าเป็น False
ดังนั้น หากอินพุตเป็น [(4,6), (10,12), (7,9), (13,16)] เอาต์พุตจะเป็นเท็จ หากอินพุตเป็น [(4,6), (4,9), (7,11), (5,8)] ผลลัพธ์จะเป็น True
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- เรียงลำดับรายการช่วงเวลา
- สำหรับ i ในช่วง 1 ถึงขนาดของช่วงเวลา ทำ
- ถ้า intervals[i, 1] <=intervals[i- 1, 1] แล้ว
- คืนค่า True
- คืนค่าเท็จ
- ถ้า intervals[i, 1] <=intervals[i- 1, 1] แล้ว
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
def dissolve(intervals):intervals.sort()for i in range(1, len(intervals)):if intervals[i][1] <=intervals[i- 1][1]:return True return Falseintervals =[(4,6),(10,12),(7,9),(13,16)] ช่วง2 =[(4,6), (4,9), (7,11), (5 ,8)] print(solve(intervals))print(solve(intervals2))
อินพุต
<ก่อนหน้า>[(4,6),(10,12),(7,9),(13,16)] [(4,6), (4,9), (7,11), (5, 8)]ผลลัพธ์
เท็จจริง