435. 無重疊區間
題目描述:給定一個區間的集合,找到需要移除區間的最小數量,使剩餘區間互不重疊。
注意:
可以認為區間的終點總是大於它的起點。
區間 [1,2] 和 [2,3] 的邊界相互“接觸”,但沒有相互重疊。
解題思路:按照區間的左邊界對集合進行排序,然後依次將每個區間壓入棧中,如果當前區間的左邊界小於棧頂區間的有邊界,即發生了重合,需要移除區間,這個時候我們貪心的移除掉右邊界更大的區間,因為這樣和後面區間重合的可能性更小,程式碼如下:
class Solution:
def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:
n = len(intervals)
if n <= 1: return 0
intervals.sort(key=lambda x:x[0])
s = [intervals[0]]
res = 0
for i in range(1, n):
inter = intervals[i]
if inter[0] < s[-1][1]:
res += 1
s[-1][1] = min(s[-1][1], inter[1])
else:
s.append(inter)
return res
相關文章
- 力扣-435.無重疊區間力扣
- 力扣 leetcode 435. 無重疊區間 貪心力扣LeetCode
- LeetCode 435 無重疊區間LeetCode
- 程式碼隨想錄演算法訓練營day36 | leetcode 435. 無重疊區間、763. 劃分字母區間、56. 合併區間演算法LeetCode
- 貪心演算法之無重疊區間演算法
- 校驗區間是否存在重疊(Python)Python
- 程式碼隨想錄演算法訓練營第第36天 | 452. 用最少數量的箭引爆氣球、435. 無重疊區間、763.劃分字母區間演算法
- 時間重疊成立式
- 統計將重疊區間合併成組的方案數.18098728
- 新增匯率無法儲存,提示存在生效期間重疊的記錄
- 線段樹(3)——區間操作疊加
- 貪心演算法-找不重疊的區間段演算法
- 【LeetCode貪心#09】用最少數量的箭引爆氣球,(涉及區間重疊情況判斷)LeetCode
- Rectangle Overlap 矩形重疊
- WinSock 重疊IO模型模型
- LeetCode 836[矩形重疊]LeetCode
- 新增時間段,但是不能與原來陣列中的時間段有重疊陣列
- Margin會重疊,你造嗎
- [貪心]最大線段重疊
- 【解惑】時間規劃,Linq的Aggregate函式在計算會議重疊時間中的應用函式
- 垂直margin為什麼會重疊
- 《重疊實驗框架》閱讀分析框架
- [LeetCode] 435. Non-overlapping IntervalsLeetCodeAPP
- Arch Linux下韓文重疊顯示Linux
- P3358 最長k可重區間集問題
- 永劫無間steam和網易有什麼區別
- Java堆疊的區別有哪些Java
- 深入解析CSS樣式層疊權重值CSS
- Android控制元件重疊顯示小記Android控制元件
- 帆軟報表linux列印字型重疊Linux
- 解決div相鄰盒子邊框重疊
- linux的centos版本修改時間重啟後無效的問題LinuxCentOS
- 面試之CSS篇 - 邊距重疊與BFC面試CSS
- CSS三大特性(層疊性,繼承性,權重)CSS繼承
- 區間dp
- javascript堆疊記憶體分配的區別JavaScript記憶體
- 重劍無鋒 大巧不工
- 實現一個可無限摺疊的table