LeeCode 中等 陣列 56 合併區間

2021-10-08 23:20:37 字數 1992 閱讀 1587

中等陣列

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

輸入: [[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] 可被視為重疊區間。

from typing import list

# 26.9%

# 執行用時:64 ms

# 記憶體消耗:14.5 mb

class

solution

:def

merge

(self, intervals: list[list[

int]])

-> list[list[

int]]:

i =1 intervals.sort(key=

lambda x: x[0]

)while i <

len(intervals)

:if intervals[i-1]

[1]>= intervals[i][0

]:intervals[i-1]

[1]=

max(intervals[i-1]

[1], intervals[i][1

])intervals.pop(i)

else

: i +=

1return intervals

# 83%

# 執行用時:48 ms

# 記憶體消耗:14.4 mb

class

solution

:def

merge

(self, intervals: list[list[

int]])

-> list[list[

int]]:

if intervals:

intervals.sort(key=

lambda x: x[0]

) i =

1while i <

len(intervals)

:if intervals[i-1]

[1]>= intervals[i][0

]:intervals[i-1]

[1]= intervals[i-1]

[1]if intervals[i-1]

[1]>= intervals[i][1

]else intervals[i][1

] intervals.pop(i)

else

: i +=

1return intervals

s = solution(

)ret = s.merge([[

1,3]

,[2,

6],[

8,10]

,[15,

18]])

print

(ret)

ret = s.merge([[

1,4]

,[4,

5]])

print

(ret)

ret = s.merge([[

1,4]

,[0,

4]])

print

(ret)

ret = s.merge([[

1,4]

,[0,

0]])

print

(ret)

ret = s.merge([[

1,4]

,[0,

2],[

3,5]

])print

(ret)

排序 中等 56 合併區間

題目 以陣列 intervals 表示若干個區間的集合,其中單個區間為 intervals i starti,endi 請你合併所有重疊的區間,並返回乙個不重疊的區間陣列,該陣列需恰好覆蓋輸入中的所有區間。示例 1 輸入 intervals 1,3 2,6 8,10 15,18 輸出 1,6 8,1...

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 可被視為重疊區間。c...

Leecode刷題筆記 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 可被視為重疊區間。思...