30 插入區間

2022-05-12 02:52:27 字數 1102 閱讀 7455

原題**:

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

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

您在真實的面試中是否遇到過這個題? 

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 無直接將數從小到大存到陣列,接...