Ref: https://leetcode-cn.com/problems/non-overlapping-intervals/
這道題的思路是考慮以何種順序遍歷全部區(qū)間,使得去除最少的區(qū)間數(shù)目以實現(xiàn)其他區(qū)間均無重疊。直觀上看嘿期,可以以每個為key,對整個
進行升序排序蛮原。同時,維護當前遍歷區(qū)間的前一個區(qū)間的右邊界為
另绩,當當前的區(qū)間
時儒陨,可以認為當前區(qū)間應當remove,故計數(shù)加一笋籽。直到遍歷全部的區(qū)間后蹦漠,可以返回最小的remove結(jié)果。代碼實現(xiàn)如下:
class Solution:
def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:
n = len(intervals)
if n == 0:
return 0
intervals.sort(key=lambda x: x[1])
result = 0
prev = intervals[0][1]
for i in range(1, n):
if intervals[i][0] < prev:
result += 1
else:
prev = intervals[i][1]
return result