【題目描述】 數組
【思路解析】bash
1.按照intervals中每一個列表中第一個元素從小到大進行排序app
2.創建一個新列表re,用於保存結果ui
3.遍歷intervals,當re中最後一個元素的尾部值小於當前interval的頭部值,說明不重合,直接將該數組加入re;不然,更新re[-1][1],取max(re[-1][1],interval[1]).spa
【代碼】code
class Solution:
def merge(self, intervals: List[List[int]]) -> List[List[int]]:
intervals.sort(key=lambda x:x[0])
re=[]
for interval in intervals:
if not re or re[-1][1]<interval[0]:
re.append(interval)
else:
re[-1][1]=max(re[-1][1],interval[1])
return re
時間複雜度O(nlogn)主要花費在sort上,空間複雜度在O(1)-O(n)。
複製代碼