贪心 | Java | LeetCode 455, 376, 53 做题总结

贪心算法介绍

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

说实话贪心算法并没有固定的套路。

一般解题步骤

  • 贪心算法一般分为如下四步:
    ① 将问题分解为若干个子问题
    ② 找出适合的贪心策略
    ③ 求解每一个子问题的最优解
    ④ 将局部最优解堆叠成全局最优解

455.分发饼干

局部最优就是找到大饼干喂胃口大的小孩 ,也可以是找到小饼干喂胃口小的小孩

  • 错误写法:
    我的思路是从大到小遍历饼干,如果当前饼干能满足当前孩子,那么继续;如果不能,一定要找到第一个能被这块饼干满足的孩子。
class Solution {public int findContentChildren(int[] g, int[] s) {if(s.length == 0) return 0;Arrays.sort(g);Arrays.sort(s);//思路是,把从小到大的饼干先分配了?还是从大到小//局部最优就是浪费最少的饼干差 min(s[j]-g[i])int i = g.length-1;int sum = 0;for(int j = s.length-1; j >= 0; j--) {if(i>=0 && s[j] >= g[i]) {sum++;i--;} else {while(i>=0 && s[j]<g[i]) {i--;}if(i<0) break;sum++;}}return sum;}
}

在这里插入图片描述
为什么错呢?可以看示例解答,遍历饼干的话,[1,1]两个元素同时能满足 [1,2,3]中的第一个,所以记为了2,但实际上答案是1。只需修改一句话,就变成正确的了。
在这里插入图片描述

  • 写法2:
    不遍历饼干了,遍历孩子。

376. 摆动序列

首先,没有理解题意,题目是要求删除元素的
在这里插入图片描述
遇到摆动(峰值)结果就++,遇到坡度上的值/平坡上的值,就不++。
遍历到i元素的时候,prediff=nums[i]-nums[i-1],curdiff=nums[i+1]-nums[i],当prediff*curdiff<0,那么就++。
但是有几种特殊情况 ①平坡(有摆动、无摆动),②首尾元素(不遍历最后一个元素,默认它有一个摆动)对于首元素,可以添加一个prediff 也就是虚拟的nums[-1] = nums[0]

局部最优:删除单调坡度上的节点(不包括单调坡度两端的节点),那么这个坡度就可以有两个局部峰值。
整体最优:整个序列有最多的局部峰值,从而达到最长摆动序列。

class Solution {public int wiggleMaxLength(int[] nums) {if(nums.length < 1) return nums.length;int curdiff=0,prediff=0,count=1;for(int i=1; i<nums.length; i++) {// prediff=nums[i]-nums[i-1]; 不需要curdiff=nums[i]-nums[i-1];if(prediff<=0&&curdiff>0 || prediff>=0&&curdiff<0) {count++;prediff = curdiff;}}return count;}
}

53. 最大子序和

一定要想到暴力法:两层for循环
分析:
连续和+nums[i],如果连续和为负数,nums[i]为正数,不如直接抛弃连续和。只要连续和不是负数,都对后续的和起到一个增加作用。

class Solution {public int maxSubArray(int[] nums) {if(nums.length == 1) return nums[0];int count=0, res=Integer.MIN_VALUE;for(int i=0; i<nums.length; i++) {if(count < 0) {count = nums[i];} else {count += nums[i];}res = count>res?count:res;}return res;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/39416.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server数据库的组成

《SQL Server 2022从入门到精通&#xff08;视频教学超值版&#xff09;》图书介绍-CSDN博客 对于数据库的概念&#xff0c;没有一个完全固定的定义&#xff0c;随着数据库历史的发展&#xff0c;定义的内容也有很大的差异&#xff0c;其中一种比较普遍的观点认为&#xff0c;…

Winform中使用HttpClient实现调用http的post接口并设置传参content-type为application/json示例

场景 Winform中怎样使用HttpClient调用http的get和post接口并将接口返回json数据解析为实体类&#xff1a; Winform中怎样使用HttpClient调用http的get和post接口并将接口返回json数据解析为实体类_winform解析json-CSDN博客 上面使用HttpClient调用post接口时使用的HttpCon…

21.《C语言》——【位操作符】

&#x1f33b;开场语 亲爱的读者&#xff0c;大家好&#xff01;我是一名正在学习编程的高校生。在这个博客里&#xff0c;我将和大家一起探讨编程技巧、分享实用工具&#xff0c;并交流学习心得。希望通过我的博客&#xff0c;你能学到有用的知识&#xff0c;提高自己的技能&a…

今天不看文章,明天变垃圾(明天收费)-----字节数据分析发展过程中所遭遇的挑战

字节数据分析发展过程中所遭遇的挑战 三个核心议题&#xff1a; 海量数据分析性能&#xff1a;会议指出Spark分析性能不足成为了一个显著问题&#xff0c;尤其是在需要毫秒级响应的业务场景中。实时导入与查询能力&#xff1a;目前Kylin只能以T1的形式提供分析服务&#xff0…

蓝牙资讯|苹果Apple Pencil新专利:用笔套扩展传感器 / 续航等模块化方案

根据美国商标和专利局最新公示的清单&#xff0c;苹果公司获得了一项 Apple Pencil 的专利&#xff0c;探索了模块化设计方案&#xff0c;用户未来可以根据自身需求或者使用场景&#xff0c;随心更换 Pencil 的模块&#xff0c;达到不同的效果。 苹果在专利中表示笔套内置传感器…

图书电商引入实在Agent:自动化运营提效80%,节省人天1000+

某知名教辅图书品牌深耕中小学教辅图书领域&#xff0c;是中国最具影响力的教育出版策划与发行集团之一&#xff0c;以丰富的图书品类&#xff0c;满足了小学、初中、高中各年龄段读者多元化的阅读需求。 2023年&#xff0c;该品牌在运营、客服等多部门超60个场景中部署实在Ag…

2024高考作文题“人工智能”

今年开年到现在&#xff0c;明显的感受就是&#xff0c;咨询人工智能机器人的客户比往年更多了。什么原因&#xff0c;是因为人工成本太高了&#xff0c;今年整体经济环境变差&#xff0c;招不起人&#xff0c;所以想用AI机器人来降低用工成本吗&#xff1f; 还是说因为语音线路…

项目进度管理(信息系统项目管理师)

定义活动的输出&#xff1a;活动清单、活动属性、里程碑清单定义活动的输入包括进度管理计划、范围基准、事业环境因素、组织过程资产定义活动的工具与技术包括专家判断、分解、滚动式规划、会议分解是一种把项目范围和项目可交付成果逐步划分为更小、更便于管理的组成部分的技…

银湖资本在中国设立公司运营点,全球投资巨头的新篇章!

近日&#xff0c;全球知名私募股权投资公司银湖资本宣布在中国设立公司运营点。一点是银湖资本在国内安置了两个办事营业点&#xff0c;一个在黑龙江&#xff0c;一个在广州等一线城市。这一举动标志着银湖资本在全球范围内的扩展进入了新的阶段&#xff0c;同时也展示了其对中…

SerialportToTcp①

窗体 效果&#xff1a;串口和网口旁边的是panel当客户端或者服务器发送消息的时候会闪烁&#xff0c;下面的的textbox当接收到接受或者发送的数据会增加数量&#xff0c;心跳机制单选框可以开关&#xff0c;可设置心跳间隔和内容&#xff0c;重置按钮重置串口数据&#xff0c;…

PDM系统中物料分类与编码规则生成方案

在企业管理软件中&#xff0c;PDM系统是企业管理的前端软件&#xff0c;用于管理研发图纸、BOM等数据&#xff0c;然后生成相关物料表或BOM&#xff0c;递交给后端ERP系统进行生产管理。在PDM系统中&#xff0c;有两种方式可以生成物料编码。 1第一种是用户可以通过软件接口将…

汽车免拆诊断案例 | 2021款路虎揽胜运动版车遥控及一键起动功能失效

故障现象 一辆2021款路虎揽胜运动版车&#xff0c;搭载AJ20-P6H3L发动机&#xff0c;累计行驶里程约为2.5万km。车主反映&#xff0c;使用智能钥匙无法解锁车门&#xff0c;使用机械钥匙打开车门&#xff0c;进入车内&#xff0c;发现一键起动功能也失效&#xff1b;根据组合…

将excel表格转换为element table(下)

在‘将excel表格转换为element table(上)’我们把excel 转换后通过数据重构绑定到了element table上&#xff0c;现在要做的就是根据源文件进行行列进行合并操作 先看看最终处理的结果 这里在一步步分析实现步骤。 先分析一下合并的逻辑 大致思路理理如上。 思路有了接下来…

3-数据提取方法1(json)(6节课学会爬虫)

3-数据提取方法1&#xff08;json&#xff09;&#xff08;6节课学会爬虫&#xff09; 1&#xff0c;Json2&#xff0c;哪里会返回json的数据&#xff08;值得尝试的操作&#xff09;3&#xff0c;Json字符串转换成字典或python类型进行数据提取&#xff08;1&#xff09;Json.…

农夫山泉:玩一个“弯道超车”的“新游戏”

今年夏天&#xff0c;有一款产品的爆火&#xff0c;仿佛上演了一出“欧亨利式”的好戏&#xff0c;既出人意料又在情理之中。它就是农夫山泉的“冰杯”。 在小红书搜索关键词“冰杯”后&#xff0c;我们会发现&#xff0c;相关笔记达到4万篇&#xff0c;相关商品超过8000件&am…

基于改进滑模、经典滑模、最优滑模控制的永磁同步电机调速系统MATLAB仿真

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 模型简介 针对永磁同步电机调速系统的响应性能和抗干扰能力问题&#xff0c;本文做了四个仿真&#xff0c;分别为&#xff1a;永磁同步电机的PID控制调速系统、基于传统滑模控制的永磁同步电机的调速系统、最…

文件存储(阿里云OSS)的实现

简介 文件包括&#xff1a;视频、音频、图片等。我们一般在开发的过程中&#xff0c;会将文件存储在本地&#xff0c;但是这种情况下会遇到性能的瓶颈、磁盘爆满等问题。那么我们就需要给文件重新找一个存储的位置就是云上。此篇介绍阿里云的文件存储的实现 1、阿里云对象存储…

Mybatis入门の基础操作

1 Mybatis概述 MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解&#xff0c;将接口和 Java 的 POJOs(Plain Old Java Objects,普通的…

# mysql 中文乱码问题分析

mysql 中文乱码问题分析 一、问题分析&#xff1a; MySQL 中文乱码通常是因为字符集设置不正确导致的。MySQL 有多种字符集&#xff0c;如 latin1、utf8、utf8mb4 等&#xff0c;如果在创建数据库、数据表或者字段时没有指定正确的字符集&#xff0c;或者在插入数据时使用了与…

Go语言特点、编译及命令

本文主要分为三部分内容分别为&#xff1a;Go语言的特点介绍&#xff1b;编译windows、linux环境文件及Go命令。 目录 Go语言特点 编译文件 编译window文件 编译linux文件 Go命令&#xff08;build/run/install/env&#xff09; 编译文件 直接运行程序 安装程序 配置G…