贪心算法总结

一、基本概述

本质:

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

难点:

​ 唯一的难点就是如何通过局部最优,推出整体最优。

做题方法:

​ 毫无套路可言,最好用的策略就是多举几个测试用例,看一下贪心是否合适。

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

二、做题

第455题 分发饼干

一个数组表示 每个小孩对应的胃口

一个数组表示 每块饼干对应的尺寸

大部分情况下处理两个数组都会想到用两层 for 循环,但是本题中,可以只用一层 for 循环,

用 for 循环来遍历小孩对应的胃口,然后定义一个 index 变量 ,来控制饼干数组的遍历,这样可以大大的简化逻辑。

第376题 摆动序列

时间复杂度O(n),空间复杂度O(1)

这道题有点难了。。。

图示可以根据所给数组画折线图表示,折线图可以很清楚的看清整个过程的走势,

局部最优:删除单调坡度上的节点,但是单调坡度两端的节点不删,那么这个坡度就可以有两个局部峰值。

整体最优:整个序列有最多的局部峰值,从而达到最长摆动序列。

局部最优推出全局最优,并举不出反例,那么试试贪心算法。

贪心其实要从直觉出发,

比如目前要增加,那么我肯定是想把它增的高高的,这样随便随便再来一个数就会有比较大的概率是符合减的条件,

同理如果要减少,那么也是尽可能的降到足够的低,这样随便再来一个数就会有比较大的概率
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值