每日一道算法題--leetcode 56--合併區間--python

【題目描述】 數組

【思路解析】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)。
複製代碼
相關文章
相關標籤/搜索