当前位置: 首页 > news >正文

第二十七天 第八章 贪心算法 part01 理论基础 455.分发饼干 376. 摆动序列 53. 最大子序和

理论基础  

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

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

最好用的策略就是举反例,如果想不到反例,那么就试一试贪心吧。

455.分发饼干  

从局部最优到全局最优,从最大饼干分给最大食量的小朋友。

注意其中一块饼干只能分一次。

还有一个细节就是,可能饼干分完了,但是有的小朋友还没被遍历到,因此要加一个条件right>=0,饼干分完后,虽然继续遍历小朋友,但是不在经过if语句。获得饼干的小朋友数目不变。

class Solution {
public:int findContentChildren(vector<int>& g, vector<int>& s) {sort(g.begin(),g.end());sort(s.begin(),s.end());int res=0;int right=s.size()-1;for(int i=g.size()-1;i>=0;i--){if(right>=0&&g[i]<=s[right]){right--;res++;}}return res;}
};

376. 摆动序列  

pre>=0 && cur<0  || pre<=0 && cur>0判断条件必须考虑pre=0的情况,从开始遍历,pre的初始值就为0。 虽然前后两个数可能相等,后面的pre也可能为0,但是cur的判断条件就会影响前后两个数相等的情况。

class Solution {
public:int wiggleMaxLength(vector<int>& nums) {int pre=0;int cur=0;int res=1;for(int i=0;i<nums.size()-1;i++){cur=nums[i+1]-nums[i];if(pre>=0 && cur<0  || pre<=0 && cur>0){res++;pre=cur;}} return res;}
};

53. 最大子序和  

关键是要理解当累加和小于0时,我们要将累加和赋值为0 。即最大子序列和最小为一。

class Solution {
public:int maxSubArray(vector<int>& nums) {int res=INT_MIN;int count=0;for(int i=0;i<nums.size();i++){count+=nums[i];if(res<count){res=count;}if(count<=0){count=0;}}return res;}
};

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • ARMv8寄存器详解
  • 一个简单的spring+kafka生产者
  • 7.6数据结构作业
  • 下拉菜单显示年份选项(月份也适用)
  • 深入理解C#中的文件系统I/O操作
  • C++报错无法访问Private
  • 卷积神经网络(CNN)和循环神经网络(RNN) 的区别与联系
  • 适用于 Windows的 5 个最佳 PDF 转 Word 转换器
  • Python爬取豆瓣电影+数据可视化,爬虫教程!
  • Linux: network: openvswitch: disk 访问速度导致不稳定
  • 【CentOS7.6】yum 报错:Could not retrieve mirrorlist http://mirrorlist.centos.org
  • 基于TCP的在线词典系统(分阶段实现)
  • vs+qt5.0 使用poppler-qt5 操作库获取pdf所有文本输出到txt操作
  • B站大课堂-自动化精品视频(个人存档)
  • 【踩坑】探究PyTorch中创建稀疏矩阵的内存占用过大的问题
  • [ 一起学React系列 -- 8 ] React中的文件上传
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • CAP 一致性协议及应用解析
  • CSS实用技巧干货
  • IP路由与转发
  • js数组之filter
  • Just for fun——迅速写完快速排序
  • Koa2 之文件上传下载
  • LeetCode29.两数相除 JavaScript
  • Mysql数据库的条件查询语句
  • nodejs实现webservice问题总结
  • Stream流与Lambda表达式(三) 静态工厂类Collectors
  • Sublime Text 2/3 绑定Eclipse快捷键
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 基于HAProxy的高性能缓存服务器nuster
  • 将 Measurements 和 Units 应用到物理学
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 微信小程序设置上一页数据
  • scrapy中间件源码分析及常用中间件大全
  • ​MPV,汽车产品里一个特殊品类的进化过程
  • ​渐进式Web应用PWA的未来
  • # Apache SeaTunnel 究竟是什么?
  • #QT(串口助手-界面)
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • #每日一题合集#牛客JZ23-JZ33
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (2)STL算法之元素计数
  • (52)只出现一次的数字III
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (SpringBoot)第七章:SpringBoot日志文件
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (几何:六边形面积)编写程序,提示用户输入六边形的边长,然后显示它的面积。
  • (利用IDEA+Maven)定制属于自己的jar包
  • (七)Java对象在Hibernate持久化层的状态
  • (三) diretfbrc详解
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会