leetcode57 插入區間

2021-10-10 05:52:56 字數 2280 閱讀 7576

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

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

示例 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 日更改。請重置為預設**定義以獲取新的方法簽名。

這道題思想上倒不難,有一些小細節需要考慮到。

將當前區間分為幾種情況進行處理。

特別注意:整個過程需要標記下新增區間是否已處理,未處理需要增加到結果中

class

solution

return res;

}//新增區間包含在當前區間中

if(newinterval[0]

>= intervals[i][0

]&& newinterval[1]

<= intervals[i][1

])//新增區間需要和當前區間合併if(

(newinterval[0]

<= intervals[i][1

]&& newinterval[1]

>= intervals[i][0

])||(newinterval[1]

>= intervals[i][0

]&& newinterval[1]

<= intervals[i][1

])))

;//依次判斷後面的區間是否和res中的最後乙個區間合併

int j = i +1;

while

(j < intervals.

size()

)else

++j;

}return res;

}//新增區間大於當前區間,需要將當前區間放在結果中

if(newinterval[0]

> intervals[i][1

])}if

(!flag)

return res;}}

;

思想類似,但是更簡潔:

特別注意:這裡flag的作用是保證新增區間插入到結果中並且只插入一次

class

solution

:def

insert

(self, intervals: list[list[

int]],

newinterval: list[

int])-

> list[list[

int]]:

flag =

false

res =

for interval in intervals:

# 在插入區間的右側,且沒有交集,這裡需要判斷下新增區間是否已插入到結果中

if interval[0]

> newinterval[1]

:ifnot flag:

flag =

true

# 在插入區間的左側

elif interval[1]

< newinterval[0]

:# 需要和插入區間合併

else

: newinterval[0]

=min

(newinterval[0]

, interval[0]

) newinterval[1]

=max

(newinterval[1]

, interval[1]

)ifnot flag:

return res

LeetCode 57 插入區間

幾個注意點 1.原集合為空 2.插入在最開始的位置 3.插入在末尾位置 4.插入在中間 可以通過新增標誌,沒有新增就每次都去判斷重疊情況進行新增 vectorresult if intervals.size 0 bool isadd false for int i 0 i intervals.siz...

leetcode57 插入區間

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

leetcode 57 插入區間

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