1.基本介绍:
贪心算法(Greedy Algorithm)是一种解决优化问题的算法思想。它的基本思想是每一步都选择当前情况下的最优解,希望通过每一步的最优选择最终达到全局的最优解。
贪心算法的核心思想是贪心选择性质,即每一步选择都是局部最优的,希望通过局部最优的选择最终获得全局最优的解。然而,贪心算法并不保证每一步的选择都会导致最终的最优解,因此在应用贪心算法时需要仔细分析问题的性质,确保贪心选择性质的正确性。
贪心算法的步骤通常包括:
- 定义问题的最优解结构。
- 构建贪心选择性质,即每一步的最优选择。
- 利用贪心选择性质进行局部最优选择,并更新问题状态。
- 检查是否满足问题的约束条件或达到最终解,如果不满足则回到步骤2继续选择。
- 合并局部最优解,得到问题的最终解。
贪心算法常用于一些优化问题,例如最短路径问题、最小生成树问题、背包问题等。它具有简单、高效的特点,并且在某些情况下能够快速得到接近最优解的结果。然而,贪心算法也有局限性,它无法处理一些需要全局最优解的问题,因此在使用贪心算法时需要仔细分析问题的性质和约束条件。
2.常用思路:
1.要进行排序
2.左右问题 分两次解决
2.leetcode题目:
1.455 分发饼干
注意排序
2. 135 分发糖果
两边都要考虑的问题,要先确定一边再确定另一边,遍历两遍,左往右一遍,右往左一遍,不要试图一次就把两边的问题都解决。
3.435 无重叠区间