emmm时间有些感人啊,看看能不能想办法优化一些
思路为:先把数组排序(元素是数组也可排序,神奇),再判断元素的左右边界是否重叠,重叠则生成新的区间
太慢原因:使用了比较多的insert和pop,比一般的费时间
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
intervals.sort()
print(intervals)
n = len(intervals)
# for i in range(n - 1):
i = 0
while i < n:
if i + 1 <= len(intervals) - 1 and intervals[i][1] >= intervals[i + 1][0]:
intervals.insert(i, [intervals[i][0], max(intervals[i + 1][1], intervals[i][1])])
intervals.pop(i + 1)
intervals.pop(i + 1)
else:
i += 1
return intervals
方法二:
不使用insert和pop,把内容放到空列表中