給出乙個區間的集合,請合併所有重疊的區間。
示例 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] 可被視為重疊區間。
class solution(object):
def merge(self, intervals):
""":type intervals: list[list[int]]
:rtype: list[list[int]]
"""res =
if not intervals:
return res
intervals.sort()
tempsmall = intervals[0][0]
templarge = intervals[0][1]
for x,y in intervals[1:]:
if templarge >= x:
templarge = max(templarge, y)
else:
tempsmall = x
templarge = y
return res
先需要對列表進行排序,因為左邊界對有序性對解決這道題至關重要。每次比較時,我們只需要比較原區間的右邊界是否比新區間的左邊界大即可,如果新區間的左邊界比原區間的右邊界大,那麼後面的區間也不會和這個原區間有交集了。這裡就體現了排序的意義。最後該解法的時間複雜度為o(nlogn),遍歷的時間複雜度o(n)《排序的複雜度o(nlogn)。 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 可被視為重疊區間。題意還是好理...