演算法 插入區間

2021-10-10 06:01:10 字數 1484 閱讀 5790

題目

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

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

示例 1:

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

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

思路

1,先寫乙個方法,用於判斷兩個陣列是否重疊,如果重疊,則返回合併後的陣列。否則,返回哪個陣列2相對於陣列1 的位置。

2,遍歷二維陣列,依次判斷是否與陣列2重疊,以及重疊的位置。

直到沒有重疊的位置。同時,將此前的陣列都加入到結果集

3,將剩餘陣列加入結果集

4,處理例外情況。陣列2與所有陣列都沒有重疊,並且比所有陣列都大。

**

public

class

main

// 判斷是否重疊

public arraylist interset

(int

l1,

int[

] l2)

else

if(p2_e>=p1_s && p2_eelse

if(p2_e>=p1_e);}

}else

if(p2_s>p1_s && p2_s<=p1_e)

; response.

add(site.middle);}

else

if(p2_e>p1_e)

; response.

add(site.middle);}

}else

response.

add(res)

;return response;

}public

int[

]insert

(int

intervals,

int[

] newinterval)

else

if(tag==site.front)

else

if(tag==site.back)

i++;}

// 將剩餘陣列全部加入到結果陣列中。

i++;while

(i// 最後一種情況,陣列2與所有陣列都不重疊,並且比所有陣列的區間都大。則此時tag從來沒有到達front的位置。l2_used=false;

if(l2_used==

false

)int

res =

newint

[res_temp.

size()

][2]

;int index =0;

while

(indexsize()

)return res;

}}

演算法之插入區間

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

演算法之插入區間

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

56 57 合併區間 插入區間

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