代码随想录训练营Day26:贪心算法:04

1.860柠檬水找零

贪心策略:先找大钱,再找小钱,20的不参与找钱

思路:用five,ten存放5元和10元的个数,初始化都是0,如果给的钱是5元,直接five++,如果给的是10元,只能找5,判断此时有没有5,有就找,没有就返回false,如果给的钱是20,分三种情况,1:有10元先找十元再找5元。2.没有10元,找三个5元。3.如果5元,10元都不够,返回false.

class Solution {
public://贪心算法先找大钱,再找小钱bool lemonadeChange(vector<int>& bills) {int five = 0,ten = 0;//代表两种的个数,因为20是就算你有也不能参与找零int n = bills.size();for(int i = 0;i<n;i++){if(bills[i] == 5){five++;}else if(bills[i] == 10){if(five==0){return false;}else{five--;}ten++;}else if(bills[i] == 20){if(ten>0){ten--;if(five>0){five--;}else{return false;}}else{if(five>=3){five = five - 3;}else{return false;}}}}return true;}
};

2.406根据身高重建队列

贪心策略:分为两次贪心。

第一次贪心:第一次贪心按照身高从高到低进行排列(如果同样的身高,那么个数小的在前面)

第二次贪心:遍历,按照个数的大小进行插入(由于前面的遍历保证了你前面的数一定是比你大的数,所以你只需要找到第i个位置插入即可)。

重点:比较器的设计

附加知识点:vector的扩容花费的时间比较长。所以另外一种方法使用list来做,相对来说花费时间比较少。

class Solution {
public://两次贪心算法:第一次按照身高从高到低进行排序,第二次按照个数进行微调//比较器,按照身高从高到低排序,次序按照从小到大进行排序static bool cmp(vector<int>& a,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) {sort(people.begin(),people.end(),cmp);vector<vector<int>> result;for(int i = 0;i<people.size();i++){int position = people[i][1];result.insert(result.begin()+position,people[i]);}return result;}
};

3.用最少数量的箭引爆气球

贪心策略:【left,right】一个right能够覆盖更多的left。

思路:按照先left,再right的方式进行升序排列,然后直到遇到了一个position[i][0]>right此时计数+1的同时更新[left,right].

class Solution {
public://设计一个比较器,按照从小到大的顺序排列,如果相等的话,按照第二个的升序进行排列static bool cmp(vector<int>& a,vector<int>& b){if(a[0] == b[0])return a[1]<b[1];return a[0]<b[0];}//思路:先进行排序,然后按照顺序遍历,找到第i个位置能射的最多的个数int findMinArrowShots(vector<vector<int>>& points) {sort(points.begin(),points.end(),cmp);int n = points.size();if(n == 0)return 0;int left = points[0][0];int right = points[0][1];int val = 1;for(int i = 0;i<n;i++){left = points[i][0];//由于这个是递增的,所以这个就是左边的最大值right = min(right,points[i][1]);//代表这一块的右边的最小值if(left>right){//代表超过了,此时对应的射箭次数就要+1val++;right = points[i][1];//此时要更新右边的位置}}return val;}
};

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

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

相关文章

音视频入门基础:像素格式专题(2)——不通过第三方库将RGB24格式视频转换为BMP格式图片

音视频入门基础&#xff1a;像素格式专题系列文章&#xff1a; 音视频入门基础&#xff1a;像素格式专题&#xff08;1&#xff09;——RGB简介 音视频入门基础&#xff1a;像素格式专题&#xff08;2&#xff09;——不通过第三方库将RGB24格式视频转换为BMP格式图片 一、引…

AI领域最伟大的论文检索网站

&#x1f4d1; 苏剑林&#xff08;Jianlin Su&#xff09;开发的“Cool Papers”网站旨在通过沉浸式体验提升科研工作者浏览论文的效率和乐趣。这个平台的核心优势在于利用Kimi的智能回答功能&#xff0c;帮助用户快速了解论文的常见问题&#xff08;FAQ&#xff09;&#xff0…

基于Qt的Model-View显示树形数据

目标 用qt的模型-视图框架实现树型层次节点的显示&#xff0c;从QAbstractItemModel派生自己的模型类MyTreeItemModel&#xff0c;用boost::property_tree::ptree操作树型数据结构&#xff0c;为了演示&#xff0c;此处只实现了个只读的模型 MyTreeItemModel的定义 #pragma o…

数据结构(一)绪论

2024年5月11日 一稿 数据元素+数据项 逻辑结构 集合 线性结构 树形结构 </

SGP.02-v4.2-001

2.4 OTA Communication on ES5 (SM-SR-eUICC) 2.4.3 SMS 在eUICC&#xff08;嵌入式通用集成电路卡&#xff09;远程配置和管理系统中&#xff0c;OTA&#xff08;空中传输&#xff09;通信由SM-SR&#xff08;订阅管理-服务器&#xff09;专门处理。SM-SR可以使用短信&…

chromium添加一个书签项,并自动显示图标

添加一个书签很简单&#xff1a; BookmarkModel* model BookmarkModelFactory::GetForBrowserContext(browser->profile()); const bookmarks::BookmarkNode* node bookmarks::AddIfNotBookmarked(model, url, title); 两句话即可。麻烦的是怎么设置完书签以后还要显示…

php开发的知识付费系统,教育机构如何实现快速招生呢?

如今教育培训市场的竞争越来越激烈&#xff0c;很多机构管理者会抱怨自己机构所在地竞争力太强&#xff0c;生源太少。想要突破机构的招生瓶颈&#xff0c;机构管理者应该如何快速招生呢? 一、无硝烟的战争—地推 校长们&#xff0c;你们知道吗? 如今互联网技术一流的阿里巴巴…

洛谷 P3809:后缀排序 ← 后缀数组

【题目来源】https://www.luogu.com.cn/problem/P3809【题目描述】 读入一个长度为 n 的由大小写英文字母或数字组成的字符串&#xff0c;请把这个字符串的所有非空后缀按字典序&#xff08;用 ASCII 数值比较&#xff09;从小到大排序&#xff0c;然后按顺序输出后缀的第一个字…

【驱动】SPI

1、简介 SPI(Serial Peripheral interface)串行外设接口。 特点: 高速:最大几十M,比如,AD9361的SPI总线速度可以达到40MHz以上全双工:主机在MOSI线上发送一位数据,从机读取它,而从机在MISO线上发送一位数据,主机读取它一主多从:主机产生时钟信号,通过片选引脚选择…

详解Python测试框架Pytest的参数化

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 上篇博文介绍过&#xff0c;Pytest是目前比较成熟功能齐全的测试框架&#xff0c;使用率肯定也不…

Coursera吴恩达深度学习专项课程01: Neural Networks and Deep Learning 学习笔记 Week 03

Neural Networks and Deep Learning Course Certificate 本文是学习 https://www.coursera.org/learn/neural-networks-deep-learning 这门课的笔记 Course Intro 文章目录 Neural Networks and Deep LearningWeek 03: Shallow Neural NetworksLearning Objectives Neural Ne…

13.Netty组件EventLoopGroup和EventLoop介绍

EventLoop 是一个单线程的执行器&#xff08;同时维护了一个Selector&#xff09;&#xff0c;里面有run方法处理Channel上源源不断的io事件。 1.继承java.util.concurrent.ScheduledExecutorService因此包含了线程池中所有的方法。 2.继承netty自己的OrderedEventExecutor …

华为数据之道第三部分导读

目录 导读 第三部分 第7章 打造“数字孪生”的数据全量感知能力 “全量、无接触”的数据感知能力框架 数据感知能力的需求起源&#xff1a;数字孪生 数据感知能力架构 基于物理世界的“硬感知”能力 “硬感知”能力的分类 “硬感知”能力在华为的实践 基于数字世界的…

hbase shell 启动报错问题

报错1&#xff1a; stopping hbasecat: /tmp/hbase-hadoop-master.pid: No such file or directory 报错2&#xff1a; ERROR [main] zookeeper.RecoverableZooKeeper: ZooKeep 解决&#xff1a; 看看你启动的hbase路径是不是错了&#xff0c;大概率是这种问题 不是启动hb…

Vuex:Vue.js 的状态管理库

一、Vuex 简介 Vuex 是 Vue.js 的状态管理模式和库。它采用集中式存储管理应用的所有组件的状态&#xff0c;并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 的出现解决了组件间共享状态的问题&#xff0c;使得状态管理变得简单、可预测和可维护。 二、Vuex 核心概…

快递物流查询:如何实现快递批量查询?这些技巧助你轻松应对

在日常生活和工作中&#xff0c;我们经常需要查询快递物流信息&#xff0c;尤其是当面对大量的快递包裹时&#xff0c;逐一查询无疑会耗费大量的时间和精力。这时&#xff0c;实现快递批量查询就显得尤为重要。本文将为你介绍办公提效工具一些实现快递批量查询的技巧&#xff0…

如何将draw.io的图导入word

解决办法&#xff08;有点点复杂&#xff09; 先在http://draw.io导出格式为svg矢量图格式&#xff0c;然后用visio打开svg&#xff0c;调整完界面等等之后再保存&#xff0c;然后在word里面插入visio

Android 13 aosp 默认关闭SELinux

通过adb修改 adb root adb shell setenforce 0 // 开SELinux&#xff0c;设置成模式permissive adb shell setenforce 1 // 关SELinux&#xff0c;设置成模式enforce adb shell getenforce // 获取当前SELinux状态源码修改 Android_source/system/core/init/selinu…

FFmpeg常用API与示例(一)—— 工具库篇(av_log、AVDictionary、avio)

工具层 1.av_log 可以设置日志的级别&#xff0c;这个看看名字就明白了&#xff0c;也不用过多的解释。 AV_LOG_PANICAV_LOG_FATALAV_LOG_ERRORAV_LOG_WARNINGAV_LOG_INFOAV_LOG_VERBOSEAV_LOG_DEBUG void test_log() {/ av_register_all();AVFormatContext *pAVFmtCtx NU…

分布式事务技术方案

什么是分布式事务 一次课程发布操作需要向数据库、redis、elasticsearch、MinIO写四份数据&#xff0c;这里存在分布式事务问题。 什么是分布式事务&#xff1f; 首先理解什么是本地事务&#xff1f; 平常我们在程序中通过spring去控制事务是利用数据库本身的事务特性来实现…