力扣860-柠檬水找零(java详细题解)

embedded/2024/9/20 10:48:01/ 标签: leetcode, java, 算法

题目链接:860. 柠檬水找零 - 力扣(LeetCode)

前情提要:

因为本人最近都来刷贪心类的题目所以该题就默认用贪心方法来做。

贪心方法:局部最优推出全局最优。

如果一个题你觉得可以用局部最优推出全局最优,并且没有反例来反驳的话就可以用贪心来试试。

题目思路:

该题其实蛮好入手,因为他只有三种逻辑的处理方式。

1.当顾客给你5块,你不用找零,手下这5块。

2.当顾客给你10块,你只能用5来找零,没有的话返回false;

3.当顾客给你20块,此时你有俩种方式找零

  • 给一个10块和一个5块
  • 给三个5块

那么我们该如何选择呢?

其实这里我们就用到了贪心。

我们应该优先选择第一种方式,因为5块更有用,如果你在20块将所有的5块用完了,后面还有一位顾客给你10块呢,那就找不了零了。

但是如果选第一种方式,这样的情况就会避免。

所以我们贪在选第一种方式。

局部最优:遇到账单20,优先消耗美元10,完成本次找零。

全局最优:完成全部账单的找

最终代码:

java">class Solution {public boolean lemonadeChange(int[] bills) {//定义每一种零钱的数量int five = 0,ten = 0;for(int i = 0;i < bills.length;i ++){//当遇到5美元时if(bills[i] == 5){five ++;//遇到10美元时}else if(bills[i] == 10){if(five < 0){return false;}ten ++;five --;//遇到20美元时}else{//优先采用第一种策略if(ten > 0 && five > 0){ten --;five--;}else if(five - 3 >= 0){five -= 3;//俩种策略都不行,返回false}else{return false;}}}return true;}
}

这一篇博客就到这了,如果你有什么疑问和想法可以打在评论区,或者私信我。

我很乐意为你解答。那么我们下篇再见!


http://www.ppmy.cn/embedded/107172.html

相关文章

C语言典型例题57

《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 例题4.9 判断整数是否为素数 代码&#xff1a; //《C程序设计教程&#xff08;第四版&#xff09;——谭浩强》 //例题4.9 判断整数是否为素数//【数学知识】素数&#xff1a;一个大于1的自然数&#xff0c;如果只…

Linux-vi编辑命令的常用用法

一、Linux系统vi编辑命令简单介绍‌ vi‌是Linux系统中一个非常流行的文本编辑器&#xff0c;它提供了强大的编辑功能&#xff0c;尤其是在命令行模式下&#xff0c;可以进行各种文本操作。 二、vi编辑模式介绍 ‌命令模式‌&#xff1a;默认模式&#xff0c;可以进行光标移…

HTTP协议(超文本传输协议)

HTTP请求消息 http请求消息组成&#xff1a; 请求行 &#xff1a;包含请求的方法 操作资源的地址 协议的版本号 http请求方法&#xff1a; GET&#xff1a;从服务器获取资源 POST&#xff1a;添加资源信息 PUT&#xff1a;请求服务器更新资源信息 DELETE&#xff1a;请…

MySQL 数据存储实现详解

MySQL 是一种流行的关系型数据库管理系统&#xff0c;其数据存储实现涉及多个核心组件和技术&#xff0c;确保数据的高效管理和可靠性。以下是对 MySQL 数据存储机制的详细解释&#xff1a; 1. 存储引擎 MySQL 通过不同的存储引擎来管理数据的存储和处理。每种存储引擎具有不…

ESD防静电监控系统助力电子制造行业转型升级

在电子制造行业中&#xff0c;静电危害不容小觑。ESD 防静电监控系统的出现&#xff0c;为行业转型升级带来强大助力。电子元件对静电极为敏感&#xff0c;微小的静电放电都可能损坏元件&#xff0c;影响产品质量。ESD 防静电监控系统能够实时监测生产环境中的静电状况&#xf…

AI-Talk开发板之LED

一、说明 AI-Talk开发板上有一颗用户LED&#xff0c;连接在CH32 PA2管脚&#xff0c;低电平亮&#xff0c;高电平灭。 相关电路图如下&#xff1a; 需要提前给CH32V003烧录特定的固件才能将CH32作为CSK6011A的exmcu&#xff0c;参考AI-Talk开发板更新CH32固件。 二、工程 …

C# 异步编程

栏目总目录 异步编程 async 和 await 关键字是 C# 5.0 引入的两个非常重要的关键字&#xff0c;它们一起工作&#xff0c;使得异步编程变得简单和直观。 async 关键字 async 关键字用于标记一个方法、lambda 表达式、匿名方法或局部方法作为异步方法。这告诉编译器该方法内部…

数据结构(三)——双向链表,循环链表,内核链表,栈和队列

双链表 产生原因&#xff1a;单链表只有一个指向后继的指针&#xff0c;如果要访问某节点的前驱结点&#xff0c;只能从头遍历&#xff0c;也就是访问后继节点的时间复杂度为1&#xff0c;访问前驱结点的时间复杂度为n。 而引入双链表使得在插入、删除的…

Django+Vue农产品销售系统的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 需要的环境3.2 Django接口层3.3 实体类3.4 config.ini3.5 启动类3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍&#xff1a;CSDN认证博客专家&#xff0c;CSDN平台Java领域优质创作者&…

vscode 快捷删除整个单词

在 Visual Studio Code (VSCode) 中删除单词可以通过几种不同的方法实现&#xff0c;主要取决于你使用的操作系统和键盘快捷键的偏好。以下是几种常见的方法&#xff1a; 方法一&#xff1a;使用键盘快捷键 在 Windows 和 Linux 上 删除光标后面的单词&#xff1a; Ctrl De…

目标跟踪算法——ByteTrack算法原理解析

文章目录 ByteTrack1. ByteTrack算法步骤&#xff1a;2. 算法解释2.1 模型初始化2.2 模型更新算法流程2.2.1 检测结果划分&#xff0c;划分为高分和较低分段2.2.2 高分段处理手段2.2.3 最优匹配与未匹配划分2.2.4 低分框再匹配2.2.5 未确认轨迹处理2.2.6 更新状态 2.3 匈牙利匹…

【大模型LLM第十一篇】微调自动化数据选择方式之MoDS

前言 来自中科院自动化所的paper MoDS: Model-oriented Data Selection for Instruction Tuning link&#xff1a;https://arxiv.org/pdf/2311.15653 github&#xff1a;https://github.com/CASIA-LM/MoDS 一、摘要 sft已经成为让LLM遵循用户指令的一种方式。通常&#xf…

C#线程同步

c#线程同步代码示例 仔细考虑下面这段代码是不是输出0 const int _max 1000000;private int _count 0;void Start(){Task task Task.Run(() >{Decr();});for (int i 0; i < _max; i){_count;}task.Wait();Debug.Log(_count);}void Decr(){for(int i 0; i < _max;…

YOLOv9改进策略【注意力机制篇】| 引入Shuffle Attention注意力模块,增强特征图的语义表示

一、本文介绍 本文记录的是基于Shuffle Attention注意力模块的YOLOv9目标检测改进方法研究。Shuffle Attention模块通过独特的设计原理&#xff0c;在保持轻量级的同时实现了高效的特征注意力机制&#xff0c;增强了网络的表示能力。本文对YOLOv9的RepNCSPELAN4模块进行二次创…

EmguCV学习笔记 C# 9.2 VideoWriter类

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

EPLAN中如何将图纸导出为PDF文件并设置页边距?

EPLAN中如何将图纸导出为PDF文件并设置页边距? 如下图所示,在项目中选中需要导出的图纸页, 如下图所示,点击上方页-----导出------PDF, 如下图所示,在弹出的窗口中设置导出文件的名称、输出目录、输出颜色,这里建议勾选“使用打印边距”, 如下图所示,继续点击下方的设…

python reques使用案例

python数据类型简介 2024/9/3 08:59:28 python数据类型简介 2024/9/3 08:59:32 你想了解哪种数据类型&#xff1f;如数字、字符串、列表等&#xff0c;还是有其他特定的类型或用法吗&#xff1f; 2024/9/3 08:59:40 所有的 2024/9/3 08:59:48 Python的主要数据类型包括&#xf…

Pencils Protocol生态新进展,即将上线 Vault 产品

“极高的盈利预期、通证的持续回购与销毁&#xff0c;Vault产品的推出正在成为Pencils Protocol生态发展的重磅利好。” Pencils Protocol是目前Scroll生态TVL最高的DeFi平台 &#xff0c;即便是行情整体较为平淡&#xff0c;其仍旧能够保持在3亿美元左右的锁仓价值&#xff0c…

?.操作符的作用

在编程中&#xff0c;?. 操作符通常被称为“可选链”&#xff08;Optional Chaining&#xff09;操作符&#xff0c;它主要用于JavaScript等现代编程语言中。这个操作符的主要作用是安全地访问深层嵌套的属性或方法&#xff0c;而无需在每一步都进行繁琐的null或undefined检查…

帆软报表使用url访问报表,自定义前端搜索,优化报表展示

近期公司页面往报表方向迁移&#xff0c;正好选择了帆软报表&#xff0c;由我负责这一部分的业务代码修改&#xff0c;我们没有采用帆软的鉴权模式。再进行简单的报表展示后发现原始的帆软报表组件不符合前端的设计要求&#xff0c;查询帆软官网后发现要修改是比较繁琐的。 先看…