参考官方解析
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
# 先将intervals按照区间的左边界从小到大排序
# 链接证明,不存在这种情况,即intervals[i]和intervals[k]可以合并,但in[i]和in[j]、in[j]和in[k]不能合并
# 所以不用担心新的区间的左边界小于当前合并好的区间集合中最后一个的左边界。因为排了序,所有后面的区间左边界都是>=它前面一个区间的左边界
intervals.sort(key=lambda x:x[0])
res = [intervals[0]]
print(res)
for i in range(1, len(intervals)):
if intervals[i][0] > res[-1][1]: # 新加的区间左边大于最后一个的右边界,不重叠
res.append(intervals[i])
else:
res[-1][1] = max(res[-1][1], intervals[i][1])# 重叠了,取两者右边界的最右
return res