LeetCode 435 無重疊區間
LeetCode 435 無重疊區間
題目:
給定一個區間的集合,找到需要移除區間的最小數量,使剩餘區間互不重疊。
注意:
可以認為區間的終點總是大於它的起點。
區間 [1,2] 和 [2,3] 的邊界相互“接觸”,但沒有相互重疊。
示例 1:
輸入: [ [1,2], [2,3], [3,4], [1,3] ]
輸出: 1
解釋: 移除 [1,3] 後,剩下的區間沒有重疊。
示例 2:
輸入: [ [1,2], [1,2], [1,2] ]
輸出: 2
解釋: 你需要移除兩個 [1,2] 來使剩下的區間沒有重疊。
示例 3:
輸入: [ [1,2], [2,3] ]
輸出: 0
解釋: 你不需要移除任何區間,因為它們已經是無重疊的了。
思路
https://leetcode-cn.com/problems/non-overlapping-intervals/solution/tan-xin-suan-fa-zhi-qu-jian-diao-du-wen-ti-by-labu/
- 從區間集合intervals中選擇一個區間 x ,這個x 是當前所有區間中結束最早的(end 最小)
- 把所有與 x 區間相交的區間從區間集合中intervals中刪除
- 重複步驟1和步驟2,直到intervals為空為止,之前選出的那些 x 就是最大不相交子集
程式碼
class Solution {
public int eraseOverlapIntervals(int[][] intervals) {
if(intervals.length == 0) return 0;
//按end升序排序
Arrays.sort(intervals, new Comparator<int[]>() {
public int compare(int[] a,int[] b){
return a[1]-b[1];
}
});
//至少一個區間不相交,最大不相交子集的個數
int count = 1;
//排序後第一個區間就是x , [[start,end]]
int x_end = intervals[0][1];
for (int[] interval : intervals){
int start = interval[0];//一維陣列的起始
if(start >= x_end){
//找到了下一個選擇的區間
count++;
x_end = interval[1];
}
}
//已知不相交子集的個數,當區間集合的長度減去不相交子集的個數,得出需要移除區間的最小數量
return intervals.length - count;
}
}
相關文章
- 力扣 leetcode 435. 無重疊區間 貪心力扣LeetCode
- 程式碼隨想錄演算法訓練營day36 | leetcode 435. 無重疊區間、763. 劃分字母區間、56. 合併區間演算法LeetCode
- 貪心演算法之無重疊區間演算法
- 校驗區間是否存在重疊(Python)Python
- 區間重疊計算及IntervalTree初識
- leetcode-區間問題總結(56,252,253,1094,435,452,646LeetCode
- 【LeetCode貪心#09】用最少數量的箭引爆氣球,(涉及區間重疊情況判斷)LeetCode
- 統計將重疊區間合併成組的方案數.18098728
- [LeetCode] 435. Non-overlapping IntervalsLeetCodeAPP
- 驍龍450與435對比 驍龍450和435有什麼區別?
- 【OpenCV學習】計算兩幅影象的重疊區域OpenCV
- DIV重疊 CSS讓DIV層疊 兩個DIV或多個DIV順序重疊加CSS
- LeetCode——無重複字元的最長子串LeetCode字元
- 【Leetcode刷題篇】leetcode56 合併區間LeetCode
- Margin會重疊,你造嗎
- WinSock 重疊IO模型模型
- [leetCode]327. 區間和的個數LeetCode
- [LeetCode] 57. Insert Interval 插入區間LeetCode
- leetcode 之無重複字元的最長子串LeetCode字元
- 【LeetCode】3 無重複字元的最長子串LeetCode字元
- 垂直margin為什麼會重疊
- 重疊IO操作在進行中
- 《重疊實驗框架》閱讀分析框架
- 判斷元素是否有重疊部分
- C++中“記憶體重疊”C++記憶體
- Session重疊問題學習(一)Session
- 【leetcode】【java】【3、無重複字元的最長子串】LeetCodeJava字元
- leetcode-3無重複字元的最長子串LeetCode字元
- LeetCode-3. 無重複字元的最長子串LeetCode字元
- Leetcode 3. 無重複字元的最長子串LeetCode字元
- leetcode無重複字元的最長字串 python實現LeetCode字元字串Python
- 每日leetcode——3. 無重複字元的最長子串LeetCode字元
- 邊距重疊以及解決方案BFC
- Arch Linux下韓文重疊顯示Linux
- css邊距重疊的解決方案CSS
- javascript 週報 435 期JavaScript
- ERP與SCM間的側重點區別(轉)
- leetcode刷題.763. 劃分字母區間.每日打卡LeetCode