- 贪心
- 概念:每一步都尽量选择局部最优解来求取最终最优解。
- 贪心算法的基本思路:
- 初始化一个空的解集合(或部分解)。
- 不断地进行选择,每次选择当前看起来最优的解决方案,并将其添加到解集合中。
- 如果该解决方案导致问题无法继续向下求解,则回退到之前的状态,尝试其他选择。
- 重复步骤2和步骤3,直到找到问题的全局最优解或满足特定条件。
在某些情况下,贪心算法可能会得到次优解或不正确的解
区间选点:给定N个闭区间[],要求在数轴上选尽可能少的点,使得每个区间至少含一个点。问最少选多少个点。
基本思路:
- 按照右端点从小到大对每个区间进行排序。
- 从前往后遍历区间,将 end 的值初始化为负无穷小。
- 如果当前区间无法覆盖前一个区间的右端点(即 ed < range[i].l),则需要选择一个新的点。此时结果 res 值加一,并更新 end 为当前区间的右端点(即 ed = range[i].r)。
实现: