news 2026/7/1 14:38:43

力扣--贪心篇(1)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣--贪心篇(1)

贪心贪心 我们喜欢你

贪心

局部最优推全局最优

贪心没有什么套路,就是要多练啊啊啊

了解相关场景和题型

1.分发饼干455. 分发饼干 - 力扣(LeetCode)

classSolution{publicintfindContentChildren(int[]g,int[]s){Arrays.sort(g);Arrays.sort(s);inti=0;for(intsNum:s){//依次喂饱胃口小的if(i<g.length&&g[i]<=sNum){i++;}}returni;}}

2.摆动序列376. 摆动序列 - 力扣(LeetCode)

//就是找峰值 找到局部最大值和局部最小值

classSolution{publicintwiggleMaxLength(int[]nums){if(nums.length<=1)returnnums.length;intcount=1;//记录初始长度Booleanflag=null;for(intj=1;j<nums.length;j++){intcur=nums[j]-nums[j-1];if(cur==0){continue;}booleancurDiff=cur>0;if(flag==null||flag!=curDiff){count++;}flag=curDiff;}returncount;}}

3.最大子序和53. 最大子数组和 - 力扣(LeetCode)

当当前的数大于之前的值的时候就重新开始

classSolution{publicintmaxSubArray(int[]nums){// 初始值:将ans和cur都设为数组第一个元素(避免全负数场景错误)intans=nums[0];intcur=nums[0];// 从第二个元素开始遍历for(inti=1;i<nums.length;i++){intnum=nums[i];// 核心逻辑:cur选择「只取当前数」或「当前数+之前累加和」的较大值// 这一步保证cur始终是「以当前元素结尾的最大子数组和」cur=Math.max(num,cur+num);// 更新全局最大和ans=Math.max(ans,cur);}returnans;}}

4.买卖股票最佳时机122. 买卖股票的最佳时机 II - 力扣(LeetCode)

classSolution{publicintmaxProfit(int[]prices){//算出和前一天利润的差 因为隔两天的利润就相当于差值相加//所以我们要求的就是收集正利润 得到最好的收益int[]profits=newint[prices.length];for(inti=1;i<prices.length;i++){profits[i-1]=prices[i]-prices[i-1];}intans=0;for(intprofit:profits){if(profit>0){ans+=profit;}}returnans;}}

5.跳跃游戏55. 跳跃游戏 - 力扣(LeetCode)

classSolution{publicbooleancanJump(int[]nums){//就是看往后的覆盖范围能到哪 然后覆盖范围里有没有到最终结果的intj=0;inti=0;while(i<=j){j=Math.max(i+nums[i],j);if(j>=nums.length-1){returntrue;}i++;}returnfalse;}}

6.跳跃游戏Ⅱ45. 跳跃游戏 II - 力扣(LeetCode)

classSolution{publicintjump(int[]nums){intn=nums.length;if(n<2)return0;// 边界:无需跳跃intsteps=0;// 最小步数intcurrentEnd=0;// 当前步数能到达的最远边界intmaxReach=0;// 遍历过程中能到达的最远位置// 遍历到倒数第二个元素即可(到最后一个就不用跳了)for(inti=0;i<n-1;i++){maxReach=Math.max(maxReach,i+nums[i]);// 更新最远可达位置// 到达当前步数的边界,需要跳一步,更新边界if(i==currentEnd){steps++;currentEnd=maxReach;// 提前终止:当前能到末尾,无需继续遍历if(currentEnd>=n-1)break;}}returnsteps;}}

7.K次数取反后最大化的数组和1005. K 次取反后最大化的数组和 - 力扣(LeetCode)

classSolution{publicintlargestSumAfterKNegations(int[]nums,intk){//先让负的全部变成正的 再排序 让最小的进行变号Arrays.sort(nums);for(inti=0;i<nums.length&&nums[i]<0&&k>0;i++){nums[i]=-nums[i];k--;}Arrays.sort(nums);if(k%2!=0){nums[0]=-nums[0];}intans=0;for(intnum:nums){ans+=num;}returnans;}}

8.加油站134. 加油站 - 力扣(LeetCode)

classSolution{publicintcanCompleteCircuit(int[]gas,int[]cost){//只要总油量大于等于总消耗 那必然存在一条合理路线intn=gas.length;intcur=0;inttotal=0;intstart=0;for(inti=0;i<n;i++){intdiff=gas[i]-cost[i];total+=diff;cur+=diff;//小于0 则换位置if(cur<0){start=i+1;cur=0;}}returntotal>=0?start:-1;}}

9.分发糖果

10.柠檬水找零860. 柠檬水找零 - 力扣(LeetCode)

classSolution{publicbooleanlemonadeChange(int[]bills){//每次都尽可能地找大的零钱int[]amount=newint[2];//分别代表5,10for(intbill:bills){if(bill==5)//无需找钱{amount[0]++;}else{//看有没有5块if(amount[0]<1){returnfalse;}amount[0]--;if(bill==10){amount[1]++;}elseif(bill==20){if(amount[1]>0){amount[1]--;}else{if(amount[0]>=2){amount[0]-=2;}else{returnfalse;}}}}}returntrue;}}

11.根据身高重建队列406. 根据身高重建队列 - 力扣(LeetCode)

classSolution{publicint[][]reconstructQueue(int[][]people){Arrays.sort(people,newComparator<int[]>(){publicintcompare(int[]person1,int[]person2){if(person1[0]!=person2[0]){returnperson1[0]-person2[0];}else{returnperson2[1]-person1[1];}}});intn=people.length;int[][]ans=newint[n][];for(int[]person:people){intspaces=person[1]+1;for(inti=0;i<n;i++){if(ans[i]==null){--spaces;if(spaces==0){ans[i]=person;break;}}}}returnans;}}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 18:48:43

26、软件开发中的协作、文档与规划策略

软件开发中的协作、文档与规划策略 代码重构与集体代码所有权 在软件开发过程中,代码重构是一项非常重要的工作。在工作时,我们应寻找重构代码的机会。重构代码不仅有助于我们更好地理解代码,对后续接手的人也有益处。经过良好重构的代码往往更简洁、清晰,并且具有合适的…

作者头像 李华
网站建设 2026/6/29 20:32:52

Redis性能提升50%的7个实战技巧,连官方文档都没讲全!

Redis性能提升50%的7个实战技巧&#xff0c;连官方文档都没讲全&#xff01; 引言 Redis作为当今最流行的内存数据库之一&#xff0c;以其高性能、低延迟的特性广泛应用于缓存、消息队列、实时统计等场景。然而&#xff0c;随着业务规模的增长&#xff0c;许多开发者发现Redis的…

作者头像 李华
网站建设 2026/6/26 10:01:38

数学实在性问题的融智学解决方案

摘要&#xff1a;本文基于融智学框架重构数学实在性问题&#xff0c;提出π作为复合现象需分解为物&#xff08;物理体现&#xff09;、意&#xff08;认知理解&#xff09;、文&#xff08;符号系统&#xff09;三个维度。通过批判柏拉图主义等传统哲学立场&#xff0c;指出数…

作者头像 李华
网站建设 2026/6/21 10:57:08

GPT-SoVITS模型微调技巧:小数据集也能出好效果

GPT-SoVITS模型微调技巧&#xff1a;小数据集也能出好效果 在虚拟主播直播带货、视障人士借助AI“听”书、个人创作者批量生成有声内容的今天&#xff0c;个性化语音合成已不再是实验室里的高冷技术&#xff0c;而是逐渐走入日常生活的实用工具。但一个现实问题始终存在&#x…

作者头像 李华
网站建设 2026/6/25 23:35:10

STLink与STM32通信接口接线详解(工业环境)

如何让STLink与STM32在工业现场“稳如泰山”&#xff1f;——深度解析高可靠性SWD调试接口设计一个工程师的深夜烦恼&#xff1a;为什么又连不上目标芯片&#xff1f;你有没有经历过这样的场景&#xff1a;凌晨两点&#xff0c;项目临近交付&#xff0c;生产线上的固件需要紧急…

作者头像 李华
网站建设 2026/6/17 11:44:27

中文语音合成哪家强?GPT-SoVITS实测结果告诉你

中文语音合成哪家强&#xff1f;GPT-SoVITS实测结果告诉你 在虚拟主播一夜爆红、AI配音席卷短视频平台的今天&#xff0c;一个现实问题摆在内容创作者面前&#xff1a;如何用最少的成本&#xff0c;快速生成一段“像自己”的高质量中文语音&#xff1f;传统语音合成系统动辄需要…

作者头像 李华