原題**:
給出乙個無重疊的按照區間起始端點排序的區間列表。
在列表中插入乙個新的區間,你要確保列表中的區間仍然有序且不重疊(如果有必要的話,可以合併區間)。
您在真實的面試中是否遇到過這個題?
yes樣例插入區間(2, 5)到[(1,2), (5,9)],我們得到[(1,9)]。
插入區間(3, 4)到[(1,2), (5,9)],我們得到[(1,2), (3,4), (5,9)]。
參考:基本思路就是先掃瞄走到新的interval應該插入的位置,接下來就是插入新的interval並檢查後面是否衝突,有衝突就合併區間,一直到新的interval的end小於下乙個interval的start,然後取新interval和當前interval中end大的即可。因為要進行一次線性掃瞄,所以時間複雜度是o(n)。而空間上如果我們重新建立乙個arraylist返回,那麼就是o(n)。
1/**2* definition of interval:
3* classs interval
9* }
10*/
1112
class
solution
26 vectorresult;
27int size=intervals.size();
28int i=0;29
for (;i)
3035
else
3639}40
41if (i4245
46for (;i)
4752
else
5356}57
58result.push_back(newinterval);
59for (;i)
6063
64return
result;65}
66 };
其他參考:
1 2
30 插入區間
是insert 3,4 into 1,2 5,9 we get 1,2 3,4 5,9 注意區間可能落在,已存在元素的範圍內,例如 3,7 插入 1,2 5,9 我開始的 思路不太流暢,這個思路相對清晰,先修改要插入的元素的start end 最後統一刪除容器中需要刪除的元素。definition ...
30 插入區間
題目描述 給出乙個無重疊的 按照區間起始端點排序的區間列表。在列表中插入乙個新的區間,你需要確保列表中的區間仍然有序且不重疊 如果有必要的話,可以合併區間 示例 1 輸入 intervals 1,3 6,9 newinterval 2,5 輸出 1,5 6,9 示例 2 輸入 intervals 1...
LintCode 30 插入區間
給出乙個無重疊的按照區間起始端點排序的區間列表。在列表中插入乙個新的區間,你要確保列表中的區間仍然有序且不重疊 如果有必要的話,可以合併區間 插入區間 2,5 到 1,2 5,9 我們得到 1,9 插入區間 3,4 到 1,2 5,9 我們得到 1,2 3,4 5,9 無直接將數從小到大存到陣列,接...