代码随想录——贪心算法 分发饼干# 题目简单 这里的局部最优就是大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个,全局最优就是喂饱尽可能多的小孩。 classSolution{// 思路:优先考虑胃口,先喂饱大胃口publicintfindContentChildren(int[] g,int[] s){ Arrays.sort(g); Arrays.sort(s);intcount=0;intstart=s...
纯文字叙述可能不是一下子能模拟出来,我把代码随想录上面这道题的精华图拉到这里,可以看一下,再配合文字和代码进行理解: 摆动序列的特殊情况 下面贴出代码: CPP版本 class Solution { public: int wiggleMaxLength(vector<int>& nums) { if (nums.size() == 1) {return nums.size();} int curdiff = ...
贪心算法理论基础: 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。贪心算法的题目没有固定套路,需要一定的常识推断,最好用的策略是举反例,如果举不出,就试试贪心算法。 1,分发饼干 分发饼干 解题…
代码如下: classSolution{publicintcandy(int[] ratings){int[] candyVec =newint[ratings.length];for(inti=0;i<candyVec.length;i++)candyVec[i] =1;//从前往后for(inti=1;i<ratings.length;i++){if(ratings[i] > ratings[i-1]){candyVec[i] = candyVec[i-1]+1;}}//从后往前for(inti=rat...
贪心算法单独篇---跟着代码随想录carl学 一、什么是贪心 贪⼼的本质是选择每⼀阶段的局部最优,从⽽达到全局最优。 这么说有点抽象,来举⼀个例⼦: 例如,有⼀堆钞票,你可以拿⾛⼗张,如果想达到最⼤的⾦额,你要怎么拿? 指定每次拿最⼤的,最终结果就是拿⾛最⼤数额的钱。 每次拿最⼤...
【代码随想录】第10章 贪心算法 第10章 贪心算法 贪心没有固定的模板套路 如果找出局部最优并可以推出全局最优,就是贪心;如果局部最优都没有找出来,就不是贪心,可能是单纯的模拟。 贪心算法一般分为如下四步: 将问题分解为若干个子问题 找出适合的贪心策略...
完整代码如下: classSolution{// 思路2:优先考虑胃口,先喂饱大胃口publicintfindContentChildren(int[]g,int[]s){Arrays.sort(g);Arrays.sort(s);intcount=0;intstart=s.length-1;// 遍历胃口for(intindex=g.length-1;index>=0;index--){if(start>=0&&g[index]<=s[start]){start--;count++;}}ret...
【代码随想录】二刷-贪心算法 贪心算法 什么是贪心? 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 贪心没有规定的套路。 刷题或面试的时候,手动模拟一下感觉可以局部最优退出整体最优,而且想不到反例,那么就试一试贪心。 贪心算法一般分为如下四步:...
简介:代码随想录 Day26 贪心算法01 中 LeetCode T376 摆动序列 LeetCode T376 摆动序列 题目链接:376. 摆动序列 - 力扣(LeetCode) 前言 这题我们看到可以删除数组中的元素也可以不删除可能就吓到了,其实是这道题可以用动态规划或者贪心的策略去解决问题,这里我们还是用贪心的解法去解决问题,具体动态规划的思路可...
今日总结 贪心算法确实很巧妙,确实没有固定的通法或套路。贪心算法似乎就是具有贪心选择性质的问题的最优解。贪心选择性质本身就是特殊的性质,只有很少一部分问题具备,这似乎也导致了贪心法写出的代码虽然简单,但在数学上证明起来困难,也很难快速想到如何选择合适地贪心策略(即如何定义每一步和局部最优)。©...