LeetCode 56
需要merge的两个interval应该是有重合的部分,也就是所有a的last要大于b的start。
考虑我们先根据start先排序,那么就只要看当前的这个interval的last是否大于下一个interval的start。
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
if intervals == None: raise Exception("invalid input")
if len(intervals) == 0: return intervals
#先排序
intervals = sorted(intervals, key = lambda item: item[0])
result = list()
result.append(intervals[0])
for index in range(1, len(intervals)):
current = intervals[index]
#看结果的最后一个的last是否大于当前的start
if (result[-1][1] >= current[0]):
#合并
result[-1][1] = max(result[-1][1], current[1])
else:
#不能合并,就增加到队尾
result.append(current)
return result