56 57 合併區間 插入區間

2021-10-10 05:52:56 字數 1323 閱讀 1401

給出乙個區間的集合,請合併所有重疊的區間。

直接對區間起點進行排序,然後遍歷,判斷當前遍歷區間的起點是否在前一區間內,在的話,更新前一區間的終點為兩者終點最大值,不在的話直接將當前區間插入。

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 解釋 ...