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;
}
}
相關文章
- 435. 無重疊區間
- 力扣 leetcode 435. 無重疊區間 貪心力扣LeetCode
- 力扣-435.無重疊區間力扣
- 程式碼隨想錄演算法訓練營day36 | leetcode 435. 無重疊區間、763. 劃分字母區間、56. 合併區間演算法LeetCode
- 貪心演算法之無重疊區間演算法
- 校驗區間是否存在重疊(Python)Python
- LeetCode 836[矩形重疊]LeetCode
- leetcode-區間問題總結(56,252,253,1094,435,452,646LeetCode
- 程式碼隨想錄演算法訓練營第第36天 | 452. 用最少數量的箭引爆氣球、435. 無重疊區間、763.劃分字母區間演算法
- 時間重疊成立式
- 【LeetCode貪心#09】用最少數量的箭引爆氣球,(涉及區間重疊情況判斷)LeetCode
- [LeetCode] 435. Non-overlapping IntervalsLeetCodeAPP
- 統計將重疊區間合併成組的方案數.18098728
- 新增匯率無法儲存,提示存在生效期間重疊的記錄
- 線段樹(3)——區間操作疊加
- 【Leetcode刷題篇】leetcode56 合併區間LeetCode
- leetcode 掃描線專題 06-leetcode.836 rectangle-overlap 力扣.836 矩形重疊LeetCode力扣
- [LeetCode] 57. Insert Interval 插入區間LeetCode
- LeetCode——無重複字元的最長子串LeetCode字元
- [leetCode]327. 區間和的個數LeetCode
- 貪心演算法-找不重疊的區間段演算法
- Rectangle Overlap 矩形重疊
- WinSock 重疊IO模型模型
- leetcode 之無重複字元的最長子串LeetCode字元
- 【LeetCode】3 無重複字元的最長子串LeetCode字元
- 新增時間段,但是不能與原來陣列中的時間段有重疊陣列
- leetcode無重複字元的最長字串 python實現LeetCode字元字串Python
- LeetCode-3. 無重複字元的最長子串LeetCode字元
- Leetcode 3. 無重複字元的最長子串LeetCode字元
- leetcode-3無重複字元的最長子串LeetCode字元
- 【leetcode】【java】【3、無重複字元的最長子串】LeetCodeJava字元
- 【Leetcode】3. Longest Substring Without RepeatingCharacters無重最長子串LeetCodeGC
- LeetCode題集-3 - 無重複字元的最長子串LeetCode字元
- 每日leetcode——3. 無重複字元的最長子串LeetCode字元
- Margin會重疊,你造嗎
- [貪心]最大線段重疊
- leetcode刷題.763. 劃分字母區間.每日打卡LeetCode
- 【解惑】時間規劃,Linq的Aggregate函式在計算會議重疊時間中的應用函式