題目
給出乙個無重疊的 ,按照區間起始端點排序的區間列表。
在列表中插入乙個新的區間,你需要確保列表中的區間仍然有序且不重疊(如果重疊,則合併區間)。
示例 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 ...