Leetcode 57 插入區間

2021-09-25 08:04:19 字數 1322 閱讀 2146

題目簡介:

給出乙個無重疊的 ,按照區間起始端點排序的區間列表。在列表中插入乙個新的區間,你需要確保列表中的區間仍然有序且不重疊(如果有必要的話,可以合併區間)。

示例 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] 重疊。

#include #include #include using namespace std;

/*在一系列非重疊的區間中插入乙個新的區間,可能還需要和原有的區間合併

我們可以對給定的區間集進行乙個乙個的遍歷比較,那麼會有兩種情況,重疊或是不重疊,不重疊的情況最好,直接將新區間插入到對應的位置即可,

重疊的情況比較複雜,有時候會有多個重疊,我們需要更新新區間的範圍以便包含所有重疊,之後將新區間加入結果 res,最後將後面的區間再加入結果 res 即可。

具體思路是,我們用乙個變數 cur 來遍歷區間,如果當前 cur 區間的結束位置小於要插入的區間的起始位置的話,說明沒有重疊,則將 cur 區間加入結果 res 中,然後 cur 自增1。

直到有 cur 越界或有重疊 while 迴圈退出,然後再用乙個 while 迴圈處理所有重疊的區間,每次用取兩個區間起始位置的較小值,和結束位置的較大值來更新要插入的區間,然後 cur 自增1。

直到 cur 越界或者沒有重疊時 while 迴圈退出。之後將更新好的新區間加入結果 res,然後將 cur 之後的區間再加入結果 res 中即可,

*/class solution

while(cur < n && intervals[cur][0] <= newinterval[1])//當前區間的開始位置 <= 新區間的結束位置 ,更新新區間的起始和結束位置

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,...