給出乙個區間的集合,請合併所有重疊的區間。
直接對區間起點進行排序,然後遍歷,判斷當前遍歷區間的起點是否在前一區間內,在的話,更新前一區間的終點為兩者終點最大值,不在的話直接將當前區間插入。
class
solution
;sort
(intervals.
begin()
,intervals.
end(),
(const vector<
int>
& a,
const vector<
int>
& b));
int size = intervals.
size()
; vectorint>> ans;
for(
int i =
0; i < size; i++))
;}else
}return ans;}}
;
給出乙個無重疊的 ,按照區間起始端點排序的區間列表。
在列表中插入乙個新的區間,你需要確保列表中的區間仍然有序且不重疊(如果有必要的話,可以合併區間)。
其實使用排序的思路也可以做,就是把待插入的區間直接插入,然後再排序,排序完就按照56題的**寫就完事了。
class
solution
vectorint>>
insert
(vectorint>>
& intervals, vector<
int>
& newinterval)
else
}return ans;}}
;
是否可以利用題目的已知條件呢,題目已經排序完畢,並且區間沒重疊,把待插入的區間起點記為left,終點記為right,即[left, right],遍歷每個區間[il, ir],若ir < left,證明無交集,直接插入,若il > right,證明也沒交集,直接插入,否則就證明有交集,更新left = min(left, il),right = max(right, ir)。
class
solution
else
if(interval[0]
> right));
inplace =
true;}
ans.
push_back
(interval);}
else
}//始終沒碰見,最後插入if(
!inplace));
}return ans;}}
;
合併和插入區間
合併區間 給出乙個區間的集合,請合併所有重疊的區間。示例 1 輸入 1,3 2,6 8,10 15,18 輸出 1,6 8,10 15,18 解釋 區間 1,3 和 2,6 重疊,將它們合併為 1,6 示例 2 輸入 1,4 4,5 輸出 1,5 解釋 區間 1,4 和 4,5 可被視為重疊區間。c...
區間 區間合併
用x,y表示乙個整數範圍區間,現在輸入一組這樣的範圍區間 用空格隔開 請輸出這些區間的合併。輸入描述 一行整數,多個區間用空格隔開。區間的逗號是英文本元。輸出描述 合併後的區間,用過空格隔開,行末無空格示例1 1,3 2,51,5示例2 1,3 2,5 8,10 11,151,5 8,10 11,1...
mysql合併到區間 合併區間
lc 合併區間 給出乙個區間的集合,請合併所有重疊的區間。示例 1 輸入 intervals 1,3 2,6 8,10 15,18 輸出 1,6 8,10 15,18 解釋 區間 1,3 和 2,6 重疊,將它們合併為 1,6 示例 2 輸入 intervals 1,4 4,5 輸出 1,5 解釋 ...