435. 无重叠区间(贪心算法)
給定一個區(qū)間的集合,找到需要移除區(qū)間的最小數(shù)量,使剩余區(qū)間互不重疊。
注意:
可以認(rèn)為區(qū)間的終點(diǎn)總是大于它的起點(diǎn)。
區(qū)間 [1,2] 和 [2,3] 的邊界相互“接觸”,但沒有相互重疊。
示例 1: 輸入: [ [1,2], [2,3], [3,4], [1,3] ]
輸出: 1
解釋: 移除 [1,3] 后,剩下的區(qū)間沒有重疊。
示例 2:
輸入: [ [1,2], [1,2], [1,2] ]
輸出: 2
解釋: 你需要移除兩個 [1,2] 來使剩下的區(qū)間沒有重疊。
示例 3:
輸入: [ [1,2], [2,3] ]
輸出: 0
解釋: 你不需要移除任何區(qū)間,因?yàn)樗鼈円呀?jīng)是無重疊的了。
這道題有些難度,官方解法給了一個動態(tài)規(guī)劃一個貪心,這里就說說貪心如何做;
首先應(yīng)該想到的是對這個二維數(shù)組進(jìn)行排序,是以左邊界排序好還是以右邊界排序好呢?
題目讓求移除區(qū)間的最小數(shù)量,那么
如果以左邊界排序,就得從右向左遍歷,每次找左邊界最大的,這樣就留給前一個的空間最大;
如果以右邊界排序,就得從左向右遍歷,每次找右邊界最小的,留給下一個區(qū)間的空間就最大;
這里我用的是以右邊界排序,從左向右記錄非交叉區(qū)間的個數(shù)。最后用 區(qū)間總數(shù) 減去 非交叉區(qū)間的個數(shù) 就是需要移除的區(qū)間個數(shù)了;
局部最優(yōu):優(yōu)先選擇右邊界最小的,給下一個區(qū)間留下更大的空間;
全局最優(yōu):得到最多的非交叉區(qū)間;
就拿示例一來說:如圖,end是最小右邊界,ans是非交叉區(qū)間的個數(shù)
代碼如下:
總結(jié)
以上是生活随笔為你收集整理的435. 无重叠区间(贪心算法)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 哈希表(散列表)知识点概述
- 下一篇: 738. 单调递增的数字(贪心算法)