56 合併區間 python

2021-09-02 01:26:30 字數 1649 閱讀 2203

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

示例 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,...