题目描述:
dj思路:
step1:先对intervals进行排序
step2:新建结果数组res,将intervals中第一个元素加入到到res中
step3:遍历intervals,对比元素和res中最后一个元素,观察是否可以合并
代码:
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
intervals.sort()
res = [intervals[0]]
for i in range(1, len(intervals)):
if intervals[i][0] <= res[-1][1]:
res[-1] = [res[-1][0], max(intervals[i][1], res[-1][1])]
else:
res.append(intervals[i])
如果要求空间复杂度为O(1),代码如下
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
intervals.sort()
n = len(intervals)
# 表示数组索引
cnt = 1
# 表示需要对比的次数
i = 1
while i < n:
if intervals[cnt][0] <= intervals[cnt-1][-1]:
intervals[cnt] = [intervals[cnt-1][0], max(intervals[cnt][1], intervals[cnt-1][1])]
del intervals[cnt - 1]
else:
cnt += 1
i += 1
return intervals