力扣 中等 435 無重疊區間

2021-10-13 14:02:32 字數 998 閱讀 1603

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

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

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

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

本問題等價於「選出最多數量的區間,使得它們互不重疊」

首先按照左端點公升序排序,dp[i]:intervals[i]為選取區間的最後乙個區間時選出的最大區間數,dp[i] = max(dp[i], dp[j]+1)

static bool comp(const vector&a,const vector&b)

int eraseoverlapintervals(vector>& intervals) }}

return size - *max_element(dp.begin(), dp.end());

}

首先按照右端點公升序排序,右端點最小的為首區間,向後檢查右端點》上乙個區間的右端點,直到左端點》上乙個區間的右端點 為不重疊區間,貪心選出,縮小為更小規模問題

static bool comp(const vector&a,const vector&b)

int eraseoverlapintervals(vector>& intervals)

}return size - pick;

}

435 無重疊區間

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

435 無重疊區間

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

435 無重疊區間

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