【Leetcode】python - [57] Insert Interval 個人解法筆記

題目出處

57. Insert Interval

難度

medium

個人範例程式碼

class Solution:
    def insert(self, intervals: List[List[int]], newInterval: List[int]) -> List[List[int]]:
        if not intervals:
            return [newInterval]

        ans = []
        for interval in intervals:
            if newInterval[0] > interval[1]: # head
                ans.append(interval)
            elif newInterval[1] < interval[0]: #tail
                ans.append(newInterval)
                newInterval = interval
            else: # merge
                newInterval = [min(interval[0], newInterval[0]), max(interval[1], newInterval[1])]

        ans.append(newInterval) # last
        return ans

最近在練習程式碼本身就可以自解釋的 Coding style,可以嘗試直接閱讀程式碼理解

算法說明

merge 類型變化,
排序時我們處理 min(start), max(end)

input handling

如果沒有 input intervals,return [newInterval]

Boundary conditions

for 到底,處理最後一組 interval,
有個滿漂亮的解法是 merge 之後的我們都使用 newInterval 幫助我們完成任務。

Reference