給出乙個無重疊的 ,按照區間起始端點排序的區間列表。
在列表中插入乙個新的區間,你需要確保列表中的區間仍然有序且不重疊(如果有必要的話,可以合併區間)。
示例 1:
輸入:intervals = [[1,3],[6,9]], newinterval = [2,5]輸出:[[1,5],[6,9]]示例 2:
輸入:intervals =思路:[[1,2],[3,5],[6,7],[8,10],[12,16]]
, newinterval =[4,8]
輸出:[[1,2],[3,10],[12,16]]解釋:這是因為新的區間[4,8]
與[3,5],[6,7],[8,10]
重疊。
跟leetcode-python-56. 合併區間類似,暴力解就是直接把新的區間插進去然後呼叫56的合併函式就好了。
# definition for an interval.
# class interval(object):
# def __init__(self, s=0, e=0):
# self.start = s
# self.end = e
class solution(object):
def insert(self, intervals, newinterval):
""":type intervals: list[interval]
:type newinterval: interval
:rtype: list[interval]
"""# tmp = interval(newinterval[0], newinterval[1])
# intervals[-1] = newinterval
# print type(intervals[0]), type(tmp)
return self.merge(intervals)
def merge(self, intervals):
""":type intervals: list[interval]
:rtype: list[interval]
"""if not intervals:
return
intervals = sorted(intervals,key=lambda x:x[0])
res =
left = intervals[0][0]
right = intervals[0][1]
for item in intervals:
if item[0] <= right:
right = max(right, item[1])
else:
left = item[0]
right = item[1]
return res
LeetCode Python 打家劫舍I
你是乙個專業的小偷,計畫偷竊沿街的房屋。每間房內都藏有一定的現金,影響你偷竊的唯一制約因素就是相鄰的房屋裝有相互連通的防盜系統,如果兩間相鄰的房屋在同一晚上被小偷闖入,系統會自動報警。給定乙個代表每個房屋存放金額的非負整數陣列,計算你在不觸動警報裝置的情況下,能夠偷竊到的最高金額。示例 1 輸入 1...
leetcode Python編碼練習
貪心演算法 1.環形路上有n個加油站,第i個加油站的汽油量是gas i 你有一輛車,車的油箱可以無限裝汽油。從加油站i走到下乙個加油站 i 1 花費的油量是cost i 你從乙個加油站出發,剛開始 的時候油箱裡面沒有汽油。求從哪個加油站出發可以在環形路上走一圈。返回加油站的下標,如果沒有答案的話返回...
leetcode Python實現 70 爬樓梯
描述 假設你正在爬樓梯。需要 n 步你才能到達樓頂。每次你可以爬 1 或 2 個台階。你有多少種不同的方法可以爬到樓頂呢?注意 給定 n 是乙個正整數。示例1 輸入 2 輸出 2 解釋 有兩種方法可以爬到樓頂。1.1 步 1 步 2.2 步 示例2 輸入 3 輸出 3 解釋 有三種方法可以爬到樓頂。...