#435
Medium
贪心

Non-overlapping Intervals

最少删除多少区间,才能让剩余区间互不重叠。

ArrayGreedy

题目定位

保留结束时间最早的区间能给未来留下最大的空间,这正是区间调度贪心的标准证明。

关键观察

当两个区间重叠时,结束更晚的那个通常是更差的保留对象。

目标复杂度

O(n log n) / O(1)

这题的解法思路怎么拆

1

保留结束时间最早的区间能给未来留下最大的空间,这正是区间调度贪心的标准证明。

2

当两个区间重叠时,结束更晚的那个通常是更差的保留对象。

3

先找出那个最能保留未来选择空间的局部决策。

4

如果排序能让这个选择被验证,就先排序。

参考实现

Python
# Generic pattern template
items.sort(key=priority)
answer = 0
for item in items:
    if can_take(item):
        take(item)
        answer = update(answer)

常见坑点

warning

按起点排序后,却没配套正确的保留规则。

warning

统计的是保留数量,却忘了最后转成删除数量。

高频追问

为什么最早结束是安全的贪心选择?

它和合并区间题有什么联系?

继续刷相关题

先把 贪心 这个模式刷成体系,再去做更难变体。

view_week回到模式页
LeetCode 435. Non-overlapping Intervals 题解思路 | Interview AiBox