【力扣每日一题】2023.7.22 柠檬水找零

news2024/11/26 10:50:09

目录

题目:

示例:

分析:

代码+运行结果:


题目:

示例:

分析:

这是一道模拟题,我们贩卖五美元(忒贵了)一杯的柠檬水,然后只收取5,10,20面值的钞票,问我们能不能在一开始没有任何零钱的情况下,完成每一笔交易(正确找零)。

这题只需要正常模拟就可以,不过有个小细节,就是如果顾客付了20美元,那么我们需要找15元回去,而这个15元可以由10元和5元组成,也可以是三张5元组成,我们应该怎么选择呢?

首先我们分析一下,如果顾客付的是5元,那么我们不用找零,直接收下。

如果顾客付的是10元,那么我们需要找零5元,也只能找零一张5元,这是没得选的。

而如果顾客付的是20元,那么我们找零15元,可以是10+5,也可以是5+5+5,这是有的选的,操作空间也就在这里了。

我们可以发现,5元是比较“万能”的,它可以找零10元和20元,而10元只能找零20元,所以我们用一点贪心思想,如果顾客付的20元,那么我们优先找零10元,这样可以节省下“万能”的5元用于其他面额的找零。

总结一下就是,如果顾客付5元,我们收下,并记录。如果顾客付10元,我们收下,记录,并将库存的5元数量减一。如果顾客付20元,我们优先找零10元+5元,没有10元的情况下找零三张5元。

代码+运行结果:

class Solution {
public:
    bool lemonadeChange(vector<int>& bills) {
        //moneys[0]表示五元数,moneys[1]表示十元数,因为无法使用二十元找零,因此不用记录二十元数
        vector<int> moneys(2,0);
        for(const int &b:bills){
            if(b==5){
                //收取五元,无需找零
                moneys[0]++;
            }else if(b==10){
                //收取十元,只能用五元找零,没有五元则返回false
                if(moneys[0]==0) return false;
                moneys[0]--;
                moneys[1]++;
            }else{
                //收取20元,如果有十元则优先使用十元找零.
                if(moneys[1]>=1){
                    //使用十元找零还需要一个五元
                    if(moneys[0]>=1){
                        moneys[1]--;
                        moneys[0]--;
                    }else return false;
                }else{
                    //没有十元则需要3张五元
                    if(moneys[0]>=3) moneys[0]-=3;
                    else return false;
                }
            }
        }
        return true;
    }
};

 

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

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

相关文章

API自动化测试总结

目录 Jmeter是怎么做API自动化测试的&#xff1f; Jmeter中动态参数的处理&#xff1f; 怎么判断前端问题还是后端问题&#xff1f; 详细描述下使用postman是怎么做API的测试的&#xff1f; 资料获取方法 Jmeter是怎么做API自动化测试的&#xff1f; 1、首先在JMeter里面…

57. 插入区间

题目链接&#xff1a;&#xff1a;力扣 解题思路&#xff0c;因为只插入一个新的区间&#xff0c;所以只需要找到插入的新区见的位置即可&#xff0c;如果与来的区间重叠&#xff0c;则进行合并&#xff0c; 两个区间重叠需要判断的情况比较多&#xff0c;可以判断两个区间不重…

已解决-使用Adobe Acrobat去除PDF水印

这个方法只能去带颜色的水印&#xff0c;灰色的去不了&#xff0c;等我有空时候&#xff0c;再写一篇使用PS去除水印的方法&#xff0c;也非常简单。敬请期待 安装软件 网上下载安装Adobe Acrobat Pro DC 安装Adobe PDF打印机 点击“添加打印机” 选择“我的打印机未列出”…

VCL界面组件DevExpress VCL v23.1 - 全新的Windows 11主题

DevExpress VCL是Devexpress公司旗下最老牌的用户界面套包&#xff0c;所包含的控件有&#xff1a;数据录入、图表、数据分析、导航、布局等。该控件能帮助您创建优异的用户体验&#xff0c;提供高影响力的业务解决方案&#xff0c;并利用您现有的VCL技能为未来构建下一代应用程…

RT-Thread qemu mps2-an385 bsp 移植制作 :环境搭建篇

前言 最近打算系统地研究一下 RT-Thread&#xff0c;包括 RT-Thread BSP 的移植&#xff0c;由于一直在使用 QEMU 进行一些软件功能的验证&#xff0c;qemu 支持很多的CPU 与 开发板&#xff0c;所以想移植一个新的 qemu board 到 RT-Thread&#xff0c;掌握BSP 移植的方法 当…

pytest配置文件:pytest.ini

1. 开始 pytest配置文件可以改变pytest的默认运行方式&#xff0c;它是一个固定的文件名称pytest.ini。 pytest.ini存放路径为项目的根路径。 2. 使用addopts-追加默认参数 我们每次在命令行中执行pytest命令时&#xff0c;如果参数是固定的&#xff0c;可以在pytest.ini进…

OpenCV:图像直方图计算

图像直方图为图像中像素强度的分布提供了有价值的见解。通过了解直方图&#xff0c;你可以获得有关图像对比度、亮度和整体色调分布的信息。这些知识对于图像增强、图像分割和特征提取等任务非常有用。 本文旨在为学习如何使用 OpenCV 执行图像直方图计算提供清晰且全面的指南。…

【Java基础教程】(四十三)多线程篇 · 下:深入剖析Java多线程编程:同步、死锁及经典案例——生产者与消费者,探究sleep()与wait()的差异

Java基础教程之多线程 下 &#x1f539;本节学习目标1️⃣ 线程的同步与死锁1.1 同步问题的引出2.2 synchronized 同步操作2.3 死锁 2️⃣ 多线程经典案例——生产者与消费者&#x1f50d;分析sleep()和wait()的区别&#xff1f; &#x1f33e; 总结 &#x1f539;本节学习目标…

SpringBoot Redis 配置多数据源

Redis 从入门到精通【应用篇】之SpringBoot Redis 配置多数据源 文章目录 Redis 从入门到精通【应用篇】之SpringBoot Redis 配置多数据源1.教程0. 添加依赖1. 配置多个 Redis 连接信息我们将上面的配置改造一下&#xff0c;支持Redis多数据源 2. 配置3. 创建 RedisTemplate 实…

Compose中常用的一些Modifier的扩展ui方法记录

Compose中常用的一些Modifier的扩展ui方法记录 关于防快速点击虚实分割线虚线边框阴影 关于 本篇主要记录一些开发中可能用到的常用方法的扩展记录&#xff0c;包括防快速带点击&#xff0c;画虚实线divider&#xff0c;画虚线边框&#xff0c;绘制阴影等。 防快速点击 inlin…

每天五分钟机器学习:线性回归和非线性回归之间的区别?

本文重点 在前面的课程中,我们学习了单变量线性回归模型以及多变量的线性回归模型,无论是单变量线性回归还是多变量线性回归,这二者都是一样的,都是线性的。本文我们将学习一下线性回归模型和非线性回归之间的区别和联系。 关于模型的基本区别 线性回归:线性回归就是每…

第三天 运维高级 MySQL主从复制

1.理解MySQL主从复制原理 1、master&#xff08;binlog dump thread&#xff09;主要负责Master库中有数据更新的时候&#xff0c;会按照binlog格式&#xff0c;将更新的事件类型写入到主库的binlog文件中。 2、I/O thread线程在Slave中创建&#xff0c;该线程用于请求Master&…

YApi 服务端测试新增 globalCookie ,兼容自动化触发服务端测试功能

YApi是一个开源的接口管理平台&#xff0c;它提供了丰富的接口管理和测试功能。其中&#xff0c;服务端测试是YApi的一个重要特性&#xff0c;可以帮助开发人员自动化执行接口测试。 在YApi的服务端测试中&#xff0c;新增globalCookie是一个很有用的功能。通过设置globalCook…

2023/7/23周报

目录 摘要 论文阅读 1、题目和现存问题 2、问题阐述及相关定义 3、LGDL模型框架 4、实验准备 5、实验过程 深度学习 1、GCN简单分类任务 2、文献引用数据分类案例 3、将时序型数据构建为图数据格式 总结 摘要 本周在论文阅读上&#xff0c;对基于图神经网络与深度…

LabVIEW使用支持向量机对脑磁共振成像进行图像分类

LabVIEW使用支持向量机对脑磁共振成像进行图像分类 医学成像是用于创建人体解剖学图像以进行临床研究、诊断和治疗的技术和过程。它现在是医疗技术发展最快的领域之一。通常用于获得医学图像的方式是X射线&#xff0c;计算机断层扫描&#xff08;CT&#xff09;&#xff0c;磁…

pnpm 与monorepo架构

软链接与硬链接 创建方式&#xff1a; mklink &#xff08;windows&#xff09; 软链接 &#xff1a; a、b指向同一个文件 b相当于一个快捷方式 硬链接&#xff1a; a、b指向同一个内存地址 某一文件修改&#xff0c;其他文件跟这变化 上图所示&#xff1a;安装某依赖&…

LabVIEW - DAQmx 数据采集

1. 题目 基于NI MAX创建模拟仿真设备&#xff0c;然后基于DAQmx编写模拟量数据采集程序&#xff0c;实现按照1s时间间隔&#xff0c;采集制定模拟输入端口一个数据的功能&#xff0c;并能够将采集的数据、数据采集的时间等参数写入文本文件保存。 2. 过程 通过在NI max的设备与…

虚拟人直播怎么做?3d虚拟主播全栈技术方案来了

元宇宙浪潮来袭后&#xff0c;虚拟人直播的应用场景得到进一步拓宽&#xff0c;大量的3d虚拟主播出现在品牌直播间、娱乐节目、发布会等应用中&#xff0c;那想要让3d虚拟主播“活得即时”&#xff0c;开启虚拟人直播要怎么做&#xff1f;本文将基于广州虚拟动力的3d虚拟主播全…

AWS IAM介绍

前言 AWS是世界上最大的云服务提供商&#xff0c;它提供了很多组件供消费者使用&#xff0c;其中进行访问控制的组件叫做IAM(Identity and Access Management)&#xff0c; 用来进行身份验证和对AWS资源的访问控制。 功能 IAM的功能总结来看&#xff0c;主要分两种&#xff1…

3、线性数据结构

线性数据结构&#xff0c;从名字可以看出&#xff0c;和“线”脱离不了关系。 那么从“线”联想&#xff0c;水平的&#xff0c;我们可以想到食堂打饭排的队伍&#xff0c;垂直的&#xff0c;我们可以联想到书桌上层叠摆放的书籍。 打饭的队伍一般遵循“先来先服务”的原则&a…