題目出處
難度
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 幫助我們完成任務。