寒假每日总结

本文介绍了贪心算法的基本概念,通过饼干分发问题展示了如何应用贪心策略,以及如何计算摆动序列的最长长度。强调了在处理这类问题时的细节注意点。
摘要由CSDN通过智能技术生成

贪心算法:

贪心算法核心理念是用局部最优解来算出全局最优解。

贪心算法没有模板套路,只能通过不同题目进行不同的贪心模拟。

贪心题目难度很容易两极分化,有时候会是常识性题,甚至没意识到是贪心算法。

饼干分发:

有n个小孩和n个饼干,每个饼干有最大满足胃口,每个小孩有胃口容量,求出这n个饼干能满足多少个小孩。

思路:用最小的饼干尽量去满足胃口最小的小孩(也可以用最大的饼干尽量去满足胃口最大的小孩,但数组要求最后一个元素向前遍历):

注意:for循环中的i下标一定要用于饼干数组,不然当饼干为{1,3},孩子为{2}时满足数量会输出0。

摆动序列:

在一个数组中删除元素,算出此数组中的最长摆动序列。

摆动序列相邻前后两序列之差呈现正负交替变化。

2个不同的元素组成的序列也是摆动序列。

定义i为数组下标,p用于记录前一个摆动,q用于计算后一个摆动。

初始化最长长度为一是因为默认最后一个为一个摆动。

下标i从第一个元素开始,从倒数第二个元素结束(因为已经记录了最后一个序列长度)

每次先更新q的摆动大小

接着和上一个摆动p进行比较(由正变负或由负变正)

满足条件的则cnt++,并更新p=q。

注意:如果将p=q放在if条件外,则会在相邻两个元素之间比较而不是相邻两个摆动,这时代码会多计算当单调摆动中存在平动序列的长度。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值