Python程式:查詢與切割區間不相交的區間
假設我們有一個已排序且不相交的區間列表和另一個表示區間的列表`cut`。我們需要刪除與`cut`區間相交的所有區間部分,並返回新的列表。
例如,如果輸入是`intervals = [[2, 11],[13, 31],[41, 61]]`,`cut = [8, 46]`,則輸出為`[[2, 8], [46, 61]]`。
為了解決這個問題,我們將遵循以下步驟:
- `cut_start`, `cut_end` := `cut`
- `ans` := 新列表
- 對於`intervals`中的每個`start`, `end`:
- 如果 `max(cut_start, start) < min(end, cut_end)`,則:
- 如果 `start < cut_start`,則:
- 將區間`[start, cut_start]`插入到`ans`中
- 如果 `end > cut_end`,則:
- 將區間`[cut_end, end]`插入到`ans`中
- 如果 `start < cut_start`,則:
- 否則:
- 如果 `max(cut_start, start) < min(end, cut_end)`,則:
- 返回`ans`
讓我們來看下面的實現來更好地理解:
示例
class Solution: def solve(self, intervals, cut): cut_start, cut_end = cut ans = [] for start, end in intervals: if max(cut_start, start) < min(end, cut_end): if start < cut_start: ans.append([start, cut_start]) if end > cut_end: ans.append([cut_end, end]) else: ans.append([start, end]) return ans ob = Solution() intervals = [[2, 11],[13, 31],[41, 61]] cut = [8, 46] print(ob.solve(intervals, cut))
輸入
[[2, 11],[13, 31],[41, 61]], [8, 46]
輸出
[[2, 8], [46, 61]]
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP