https://leetcode-cn.com/explore/interview/card/bytedance/243/array-and-sorting/1046/
image.png
先排序吧愤炸,好操作一點。
排序好了后,后面一個的start只要大于等于前面一個的end粘驰,說明就要合并京办,否則就單獨一個出刷。
class Solution(object):
def merge(self, intervals):
"""
:type intervals: List[List[int]]
:rtype: List[List[int]]
"""
if not intervals or len(intervals) ==1:
return intervals
intervals.sort(key=lambda x:x[0])
result = [intervals[0]]
for i in range(1,len(intervals)):
if intervals[i][0]<=result[-1][1]:
result[-1][1] = max(result[-1][1],intervals[i][1])
else:
result.append(intervals[i])
return result
如果不排序睡汹,只能每個區(qū)間去找和他start相鄰的兩個區(qū)間厨幻,然后看這三個區(qū)間能否合并告私,查找也要時間復(fù)雜度的屎暇,不會比排序后快多少。