435 無重疊區間(貪心演算法)

2022-06-07 11:42:15 字數 916 閱讀 5433

給定乙個區間的集合,找到需要移除區間的最小數量,使剩餘區間互不重疊。

注意:可以認為區間的終點總是大於它的起點。

區間 [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

解釋: 你不需要移除任何區間,因為它們已經是無重疊的了。

思路:把問題轉換成:最多能選取幾個區間不重疊的區域

那答案顯然變成:總區間個數 - 不重疊區間個數

1.按照結束時間從小到大排序,然後對新列表遍歷。

3.每次都選結束時間最早的

4.每選一次更新一下結束時間

class solution:

def eraseoverlapintervals(self, intervals: list[list[int]]) -> int:

if not intervals:

return 0

intervals = sorted(intervals, key=lambda x:x[1])

ans = 0

end = -float('inf') # 結束時間

for i in intervals:

if i[0] >= end:

ans += 1

end = i[1]

return len(interval) - ans

貪心演算法 leetcode 435 無重疊區間

include include include include include include using namespace std 貪心演算法 可以認為是動態規劃的乙個特例,相比於動態規劃,使用貪心演算法需要滿足更多的條件,但是效率更高 貪心演算法的條件 每一步都做乙個區域性最優解的選擇,最終的...

貪心演算法 力扣435 無重疊區間

給定乙個區間的集合 intervals 其中 intervals i starti,endi 返回 需要移除區間的最小數量,使剩餘區間互不重疊 示例 輸入 intervals 1,2 2,3 3,4 1,3 輸出 1 解釋 移除 1,3 後,剩下的區間沒有重疊。思路1 貪心演算法在選擇要保留區間時,...

435 無重疊區間

題目描述 給定乙個區間的集合,找到需要移除區間的最小數量,使剩餘區間互不重疊。注意 可以認為區間的終點總是大於它的起點。區間 1,2 和 2,3 的邊界相互 接觸 但沒有相互重疊。示例 1 輸入 1,2 2,3 3,4 1,3 輸出 1 解釋 移除 1,3 後,剩下的區間沒有重疊。示例 2 輸入 1...