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

第二十九天 第八章 贪心算法 part03 134. 加油站 135. 分发糖果 860.柠檬水找零 406.根据身高重建队列

134. 加油站  

两种情况讨论,(容量-消耗量)的累加和小于0时不可环绕一周,反之即可,同时如果当前容量-消耗量小于0,那么当前加油站也不是加油站,往后推一站,但是我们一定能找到一个加油站作为开始加油站环绕一圈。

class Solution {
public:int canCompleteCircuit(vector<int>& gas, vector<int>& cost) {int sum=0;int cur=0;int begin=0;for(int i=0;i<gas.size();i++){cur+=gas[i]-cost[i];sum+=gas[i]-cost[i];if(cur<0){begin=i+1;cur=0;}}if(sum<0) return -1;return begin;}
};

135. 分发糖果  

一开始我只对相邻评分进行比较,两边一起考虑一定会顾此失彼。

其中要注意一个细节,在进行反向比较时,res[i-1]=max(res[i]+1,res[i-1]);我们比相邻数目多的同时,还要同原本自己的数量相比,取较大的一个值。

class Solution {
public:int candy(vector<int>& ratings) {vector<int> res(ratings.size(),1);//从前往后for(int i=1;i<ratings.size();i++){if(ratings[i-1]<ratings[i])  res[i]=res[i-1]+1;}   //从后往前for(int i=ratings.size()-1;i>=1;i--){if(ratings[i-1]>ratings[i])  res[i-1]=max(res[i]+1,res[i-1]);} int sum=0;for(int i=0;i<res.size();i++){sum+=res[i];}  return sum; }
};

860.柠檬水找零  

这题相对容易,但是要考虑到,如果顾客给的是20,我们要先考虑使用10+5的方式找零钱,而不是全使用5元的零钱。

class Solution {
public:bool lemonadeChange(vector<int>& bills) {int five = 0;int ten = 0;for(int i=0;i<bills.size();i++){if(bills[i]==5) {five++;}if (bills[i]==10) {if(five<=0) return false;ten++;five--;            }if (bills[i]==20) {if(ten>0 && five>0){ten--;five--;}else if(five>=3) {five-=3;}else{return false;}}}return true;}
};

406.根据身高重建队列 

当一个题需要考虑两个维度时,我们要一个一个的考虑。

这题先考虑身高,再考虑位置。(这里需要讨论,如果我们先对位置排序,排序后确定不了最终的位置)

class Solution {
public:static bool campare(const vector<int> &a,const vector<int> &b){if(a[0]==b[0])  return a[1]<b[1];return a[0]>b[0];}vector<vector<int>> reconstructQueue(vector<vector<int>>& people) {vector<vector<int>> res;sort(people.begin(),people.end(),campare);for(int i=0;i<people.size();i++){int position=people[i][1];res.insert(res.begin()+position,people[i]);}return res;}
};

相关文章:

  • 掌握【Python异常处理】:打造健壮代码的现代编程指南
  • flutter背景贴图的困难总结
  • LDRA Testbed(TBrun)软件单元测试_实例讲解(指针类型的处理)
  • 自然语言处理与Transformer模型:革新语言理解的新时代
  • LlamaGen:自回归模型的图像生成革命
  • 大语言模型系列-Transformer
  • 人工智能概论 | 基于A*算法的8数码问题求解
  • 绝区肆--2024 年AI安全状况
  • wordpress网站添加一个临时维护功能
  • 车辆出险报告API接口及使用
  • 算法数据结构必备篇章2
  • 5.opencv深浅拷贝
  • O2OA(翱途)开发平台 V9.1 即将发布,更安全、更高效、更开放
  • 分享五款软件,成为高效生活的好助手
  • 2024年信息素养大赛图形化编程小低组复赛真题-附答案 6547网
  • 【347天】每日项目总结系列085(2018.01.18)
  • 【React系列】如何构建React应用程序
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • angular组件开发
  • CSS选择器——伪元素选择器之处理父元素高度及外边距溢出
  • gulp 教程
  • iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码...
  • JavaScript设计模式之工厂模式
  • Markdown 语法简单说明
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Python连接Oracle
  • Python中eval与exec的使用及区别
  • Spark学习笔记之相关记录
  • SSH 免密登录
  • swift基础之_对象 实例方法 对象方法。
  • vue 个人积累(使用工具,组件)
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 记录一下第一次使用npm
  • 我有几个粽子,和一个故事
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​卜东波研究员:高观点下的少儿计算思维
  • #数学建模# 线性规划问题的Matlab求解
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (十六)串口UART
  • (十七)Flink 容错机制
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)菜鸟学数据库(三)——存储过程
  • (转)视频码率,帧率和分辨率的联系与区别
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .cn根服务器被攻击之后
  • .md即markdown文件的基本常用编写语法
  • .NET Core 成都线下面基会拉开序幕