贪心算法【leetcode】

笔记:代码随想录

概述

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

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

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

鸡肋的四个步骤

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

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

力扣

1.分发饼干

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

2.摆动序列(上嘴脸)

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

3.最大子序和

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

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

假如第 0 天买入,第 3 天卖出,那么利润为:prices[3] - prices[0]。相当于(prices[3] - prices[2]) + (prices[2] - prices[1]) + (prices[1] - prices[0])。将求利润的问题转换为求今天相对于昨天利润的差的相加。求最大利润当然是将正利润相加。

5.跳跃游戏

将问题转换为范围覆盖问题。

6.跳跃游戏二

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

8.加油站

for循环适合模拟从头到尾的遍历,而while循环适合模拟环形遍历,要善于使用while。将两个数组做结合的思路。

9.分发糖果

确定一边再确定另一边。

10.柠檬水找零

11.根据身高重建队列。

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

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

13.无重叠区间

14.划分字母区间

15.合并区间

16.单调递增的数字

17.监控二叉树

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值