題目大意
給定一組區間,然後將有重疊部分的區間合併,注意如果兩個區間僅有乙個數重疊也算,比如[1,4]與[4,5]。
分析
直接按照區間的左端點大小公升序排序,如果相同則比較右端點,均按公升序。排序後,如果後乙個區間的左端點小於等於前乙個區間的右端點,那麼我們就認為這兩個區間可以合併,否則將前乙個區間認為沒有可以合併的區間了,扔到結果裡邊去,因為後乙個如果都不能合併的話,考慮到公升序的原因,後面的區間肯定也不能合併(後面的區間左端點都在當前區間的右端點右邊)。
源**
bool cmp(const vector& node1, const vector& node2)
return node1[0] < node2[0];
}vector> merge(vector>& intervals)
int left = intervals[0][0], right = intervals[0][1];
for(int i = 1; i < intervals.size(); i++) else );
left = intervals[i][0];
right = intervals[i][1];}}
res.push_back();
return res;
}
Leetcode 56 合併區間
對所有區間按起點位置進行排序 遍歷到k點後的 l,r 已知的包含k點的最大區間 遍歷到k 1點,若該起點屬於 l,r 那麼可能擴充套件這個區間的終點,r max r,k 1點的end definition for an interval.struct interval interval int s,...
LeetCode 56 合併區間
給出乙個區間的集合,請合併所有重疊的區間。示例 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 可被視為重疊區間。解題思路 1...
LeetCode 56 合併區間
給出乙個區間的集合,請合併所有重疊的區間。示例 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 可被視為重疊區間。題意還是好理...