核心理解:
两个区间 [a, b] 和 [c, d] 重叠的完整数学条件是:
(第一个区间的起点 第二个区间的终点)
(第二个区间的起点 第一个区间的终点)
而排序的核心作用就是通过调整区间顺序,消除对 的显式判断,使得我们只需关注 这一个条件。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
if not intervals:
return []
intervals.sort(key = lambda x: x[0])
merge=[intervals[0]]
for current in intervals[1:]:
last=merge[-1]
if last[1] >= current[0]:
last[1]=max(last[1],current[1])
else:
merge.append(current)
return merge
|
题目分析:
本题的核心是处理一个二维的数组。
先将区间按左端点排序。
1
| intervals.sort(key = lambda x: x[0])
|

剩下的步骤只需要完成比较curret和last
如果current[0]小于last[1],就说明可以合并,更新的时候只用把last[1]更新成max
(current[1],last[1])即可
如果current[0]大于last[1],直接append current即可。