我正在尝试解决一个问题,其中需要合并重叠的区间。
这个问题是:给定一组区间,合并所有重叠的区间。
例如,给定 [1,3]、[2,6]、[8,10] 和 [15,18],应返回 [1,6]、[8,10] 和 [15,18]。
这是我的解决方案:
# Definition for an interval.
# class Interval:
# def __init__(self, s=0, e=0):
# self.start = s
# self.end = e
class Solution:
def merge(self, intervals):
"""
:type intervals: List[Interval]
:rtype: List[Interval]
"""
start = sorted([x.start for x in intervals])
end = sorted([x.end for x in intervals])
merged = []
j = 0
new_start = 0
for i in range(len(start)):
if start[i]<end[j]:
continue
else:
j = j + 1
merged.append([start[new_start], end[j]])
new_start = i
return merged
但是很明显它缺少了最后一个区间,如下:
Input : [[1,3],[2,6],[8,10],[15,18]]
Answer :[[1,6],[8,10]]
Expected answer: [[1,6],[8,10],[15,18]]
不确定如何将最后一个时间段包括在内,因为重叠只能在正向模式下检查。
如何修复我的算法,使其可以工作到最后一个时间段?