給出乙個區間的集合,請合併所有重疊的區間。
示例 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] 可被視為重疊區間。
記intervals為所有區間的集合;ans為輸出的區間集合,初始時ans的第乙個區間是第乙個intervals的區間。
將intervals的所有區間按起始元素大小公升序排序
依次遍歷每個區間,如果intervals第 i 個區間的始端大於ans最後乙個區間的末端,則將第 i 個區間新增進ans;否則,判斷當intervals第 i 個區間的末端大於ans最後乙個區間的始端時,將ans最後乙個區間的末端替換成第 i 個intervals區間的末端
# definition for an interval.
# class interval:
# def __init__(self, s=0, e=0):
# self.start = s
# self.end = e
class solution:
def merge(self, intervals):
""":type intervals: list[interval]
:rtype: list[interval]
"""if len(intervals)<1:
return intervals
ans=
intervals = sorted(intervals,key = lambda start: start.start)
for i in range(1,len(intervals)):
if ans[-1].endans[-1].end:
ans[-1].end=intervals[i].end
return ans
以上**是在leetcode上的,leetcode上面內部對intervals定義為intervals[i].start=intervals[i][0] ,intervals[i].end=intervals[i][1] ,而如果直接在pycharm上面執行python3檔案的話,不需要這麼麻煩,以下為**:
def merge(intervals):
""":type intervals: list[interval]
:rtype: list[interval]
"""if len(intervals)<1:
return intervals
ans=
intervals.sort()
for i in range(1,len(intervals)):
if ans[-1][1]ans[-1][1]:
ans[-1][1]=intervals[i][1]
return ans
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 可被視為重疊區間。思路 注釋 ...
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 可被視為重疊區間。思路 注釋 ...
56 合併區間
給出乙個區間的集合,請合併所有重疊的區間。輸入 1,3 2,6 8,10 15,18 輸出 1,6 8,10 15,18 解釋 區間 1,3 和 2,6 重疊,將它們合併為 1,6 輸入 1,4 4,5 輸出 1,5 解釋 區間 1,4 和 4,5 可被視為重疊區間。先按首位置進行排序,假設a 1,...