1. "最少箭引爆气球"如何用排序+贪心而非差分
"最少箭引爆气球"(LeetCode 452)如何用排序 + 贪心而非差分?
- 排序 + 贪心
- 区间不相交
- 区间贪心:按右端点排序后每次取最早结束的区间,统计不相交层数
问题等价于"求最少不相交区间的数量":每支箭能引爆一组重叠区间,最少箭数 = 最大不相交区间数。做法:按区间右端点排序,维护当前箭的"覆盖右边界"(初始为第一个区间右端点),遍历区间,若区间左端点 ≤ 当前右边界则重叠(共用一支箭,不更新);否则需要新箭,更新右边界为该区间右端点并计数。复杂度 O(n log n)。
这个问题本质是"区间调度/贪心",不是差分计数。关键洞察是"排序右端点 + 贪心选最早结束的区间"能最大化不相交数量。差分用于"区间覆盖计数",而这里要求"最少箭覆盖所有区间",是贪心问题,故用排序 + 贪心。