题目定位
它本质上是区间调度的变形:一支箭可以覆盖一个重叠簇,因此贪心点就在最早结束边界。
关键观察
只要两个气球区间重叠,就能用同一支箭处理,因此真正重要的是重叠区间的共同边界。
目标复杂度
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
已经排序了,却仍然把每个区间独立处理。
高频追问
为什么结束边界是正确的贪心锚点?
它和最少删除区间题的差别是什么?
继续刷相关题
先把 贪心 这个模式刷成体系,再去做更难变体。