贪心算法【leetcode】

笔记:代码随想录

概述

贪心的本质是选择每一阶段的局部最优,从而达到全局最优。

(1)靠自己手动模拟,如果模拟可行,就可以试一试贪心策略,如果不可行,可能需要动态规划。

(2)最好用的策略就是举反例,如果想不到反例,那么就试一试贪心吧

鸡肋的四个步骤

贪心算法一般分为如下四步:

  • 将问题分解为若干个子问题
  • 找出适合的贪心策略
  • 求解每一个子问题的最优解
  • 将局部最优解堆叠成全局最优解

力扣

1.分发饼干

这里的局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩。

2.摆动序列(上嘴脸)

贪心:将不是峰值的地方给贪掉了。

3.最大子序和

如果 -2 1 在一起,计算起点的时候,一定是从1开始计算,因为负数只会拉低总和,这就是贪心贪的地方!

4.买卖股票的最佳时机二

5.跳跃游戏

6.跳跃游戏二

7.k次取反后最大化的数组和

8.加油站

9.分发糖果

10.柠檬水找零

11.根据身高重建队列。

和10类比一下,遇到两个维度权衡时,先确定一个维度,再确定另一个维度。

重叠区间问题

12.用最少数量的箭引爆气球

13.无重叠区间

14.划分字母区间

15.合并区间

16.单调递增的数字

17.监控二叉树

你可能感兴趣的:(leetcode,leetcode)