插入區間 Python 排序

2021-10-10 17:36:15 字數 1327 閱讀 7982

給出乙個無重疊的 ,按照區間起始端點排序的區間列表。

在列表中插入乙個新的區間,你需要確保列表中的區間仍然有序且不重疊(如果有必要的話,可以合併區間)。

示例 1:

輸入:intervals = [[1,3],[6,9]], newinterval = [2,5]

輸出:[[1,5],[6,9]]

示例 2:

輸入:intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newinterval = [4,8]

輸出:[[1,2],[3,10],[12,16]]

解釋:這是因為新的區間 [4,8] 與 [3,5],[6,7],[8,10] 重疊。

注意:輸入型別已在 2019 年 4 月 15 日更改。請重置為預設**定義以獲取新的方法簽名。

分析:分為需要合併區間和不需要合併區間.

不需要合併區間時newinterval整個在intervals的外側, 利用左小於左,右大於右來判斷是否無交集, 即newinterval[0] 大於interval每個區間的最小值的同時newinterval[1]小於interval每個區間的最大值.

需要合併區間時則確定區間最大最小值後插入這個新的區間, 不再新增原有區間和插入區間.

class solution:

def insert(self, intervals: list[list[int]], newinterval: list[int]) -> list[list[int]]:

left, right = newinterval

placed = false

ans = list()

for li, ri in intervals:

if li > right: #這裡保證了newinterval與整個interval的區間都沒有交集, 有交集的情況在else這裡, 所以這裡需要設定無交集的區間插入.

# 在插入區間的右側且無交集, 根據right確定插入位置

if not placed:

placed = true #注意這裡避免重複插入區間

elif ri < left:

# 在插入區間的左側且無交集

else: # 這裡只有有交集的區間, 前面已經去掉了無交集的區間

# 與插入區間有交集,計算它們的並集

left = min(left, li)

right = max(right, ri)

if not placed: #保證newinterval只新增一次

return ans

插入區間 python

題目描述 給出乙個無重疊的,按照區間起始端點排序的區間列表。在列表中插入乙個新的區間,你需要確保列表中的區間仍然有序且不重疊 如果有必要的話,可以合併區間 示例1 輸入 intervals 1,3 6,9 newinterval 2,5 輸出 1,5 6,9 示例2 輸入 intervals 1,2...

排序 中等 57 插入區間

題目 給你乙個 無重疊的 按照區間起始端點排序的區間列表。在列表中插入乙個新的區間,你需要確保列表中的區間仍然有序且不重疊 如果有必要的話,可以合併區間 示例 1 輸入 intervals 1,3 6,9 newinterval 2,5 輸出 1,5 6,9 示例 2 輸入 intervals 1,...

56 57 合併區間 插入區間

給出乙個區間的集合,請合併所有重疊的區間。直接對區間起點進行排序,然後遍歷,判斷當前遍歷區間的起點是否在前一區間內,在的話,更新前一區間的終點為兩者終點最大值,不在的話直接將當前區間插入。class solution sort intervals.begin intervals.end const ...