题目:
给出一个区间的集合,请合并所有重叠的区间。
示例 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] 可被视为重叠区间。
思路:
首先把数组排个序,然后挨个比较,如果后一个区间的左端点小于等于前一个区间的右端点,并且后一个区间的右端点大于等于前一个区间的右端点,那就进行区间合并,然后判断下一个区间是否可以合并。如果不能合并,就放到结果数组中。
代码:
class Solution(object):
def merge(self, intervals):
"""
:type intervals: List[List[int]]
:rtype: List[List[int]]
"""
if not intervals:
return intervals
intervals.sort()
res = []
temp = []
for i in range(len(intervals)):
if not temp:
temp = list(intervals[i])
continue
if temp[1] >= intervals[i][0] and intervals[i][1] >= temp[1]:
temp = [temp[0], intervals[i][1]]
continue
if temp[1] >= intervals[i][1]:
continue
res.append(temp)
temp = list(intervals[i])
res.append(temp)
return res