题目定位
保留结束时间最早的区间能给未来留下最大的空间,这正是区间调度贪心的标准证明。
关键观察
当两个区间重叠时,结束更晚的那个通常是更差的保留对象。
目标复杂度
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
统计的是保留数量,却忘了最后转成删除数量。
高频追问
为什么最早结束是安全的贪心选择?
它和合并区间题有什么联系?
继续刷相关题
先把 贪心 这个模式刷成体系,再去做更难变体。