diff --git a/notes/src/greedy.md b/notes/src/greedy.md index d38bed0..982c895 100644 --- a/notes/src/greedy.md +++ b/notes/src/greedy.md @@ -112,3 +112,41 @@ 局部最优:找到当前覆盖区间的元素,使得能最大程度地延长当前覆盖范围。 过程:一开始第一个元素的值就是初始覆盖区间的长度,遍历这个区间的所有元素,找到这样一个元素,它能够最大程度地延长当前覆盖区间,这个元素就是下一跳。在下一个覆盖区间中,再找到同样的元素,这样一直迭代。 + +## [452. 用最少数量的箭引爆气球](https://leetcode.cn/problems/minimum-number-of-arrows-to-burst-balloons/) + +全局: + +- 限制:射完全部气球 +- 目标:消耗的箭的数量最少 + +局部: + +- 限制:射箭的范围是当前气球所在的范围 +- 目标:这一箭要射穿的气球数量达到最大 + +算法优化:先对左边界(或右边界)进行排序,以降低时间复杂度。 + +## [435. 无重叠区间](https://leetcode.cn/problems/non-overlapping-intervals/) + +从左向右记录非交叉区间的个数,用区间总数减去非交叉区间的个数就是需要移除的区间个数了。问题就是要求非交叉区间的最大个数。 + +先按右边界进行排序。 + +局部最优:优先选右边界小的区间,所以从左向右遍历,留给下一个区间的空间大一些,从而尽量避免交叉。 + +全局最优:选取最多的非交叉区间。 + +## [56. 合并区间](https://leetcode.cn/problems/merge-intervals/) + +先按左边界排序。 + +局部最优:当前区间能合并出的最长区间 + +全局最优:合并所有重叠区间 + +## [968. 监控二叉树](https://leetcode.cn/problems/binary-tree-cameras/) + +局部最优:让叶子节点的父节点安摄像头,所用摄像头最少 + +全局最优:全部摄像头数量所用最少