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

贪心算法-860.柠檬水找零-力扣(LeetCode)

一、题目解析

 我们需要注意我们是没有初始零钱的,所以当第一个顾客支付10或20时,无法找零此时返回false。

二、算法解析

根据贪心算法的解决方式,我们需要先把解决该问题分解为若干步。

首先对于顾客支付的钱共有三种,5,10,20,我们需要对其分别讨论。

当顾客支付5元时,我们直接收下,用于当做零钱使用。

当顾客支付10元时,我们要先判断是否有零钱补,如果没有则返回false,有则补5元。

当顾客支付20元时,我们有两种补钱方式(这里就用到了贪心),一种是10+5,另一种是5+5+5.

当20,10的时候,用了下面种补钱方式,10元就无法补钱,所以优先使用10+5的补钱方式,其次是5+5+5的补钱方式,如果两种都不满足,则返回false。

这里可以根据原理实现代码,链接:860. 柠檬水找零 - 力扣(LeetCode)                                                                                                                                                                                                  证明在结尾,如果有兴趣可以看看。

三、代码示例

class Solution {
public:bool lemonadeChange(vector<int>& bills) {int a = 0,b = 0;//a代表5元的张数,b代表10元的张数for(int i = 0;i<bills.size();i++){if(bills[0] == 10 || bills[0] == 20) return false;if(bills[i] == 5) a++;if(bills[i] == 10){if(a != 0){a--;b++;}else return false;}if(bills[i] == 20){if(a>=1 && b>= 1)//贪心{a--;b--;}else if(a>=3){a -= 3;}else return false;}}return true;}
};

 

四、证明

为什么贪心解就是最优解呢?这需要用数学的证明方法来证明。

                            

 看到最后,如果对您有帮助还请留下一个免费的赞和收藏,小编感激不尽,我们下期再见!


文章转载自:
http://argonautic.zzgtdz.cn
http://anathematise.zzgtdz.cn
http://canonry.zzgtdz.cn
http://carded.zzgtdz.cn
http://cholecystokinetic.zzgtdz.cn
http://calculative.zzgtdz.cn
http://avestan.zzgtdz.cn
http://almanack.zzgtdz.cn
http://azure.zzgtdz.cn
http://bullroarer.zzgtdz.cn
http://acyloin.zzgtdz.cn
http://buntons.zzgtdz.cn
http://arose.zzgtdz.cn
http://borneol.zzgtdz.cn
http://cdpd.zzgtdz.cn
http://antianxiety.zzgtdz.cn
http://blackie.zzgtdz.cn
http://balzacian.zzgtdz.cn
http://alit.zzgtdz.cn
http://brier.zzgtdz.cn
http://anthology.zzgtdz.cn
http://antipoverty.zzgtdz.cn
http://bermuda.zzgtdz.cn
http://belaud.zzgtdz.cn
http://candidature.zzgtdz.cn
http://attentively.zzgtdz.cn
http://brawny.zzgtdz.cn
http://brainfag.zzgtdz.cn
http://abridge.zzgtdz.cn
http://aortic.zzgtdz.cn
http://www.dtcms.com/a/159536.html

相关文章:

  • Linux系统编程:信号量Semaphore详解 (IPC)
  • vue3中ref在js中为什么需要.value才能获取/修改值?
  • C++:STL——list
  • 可以隐藏列的表格
  • 单片机 + 图像处理芯片 + TFT彩屏 复选框控件
  • Linux内核中的编译时安全防护:以网络协议栈控制块校验为例
  • 单片机之间的双向通信
  • terraform查看资源建的关联关系
  • 一、linux系统启动过程操作记录
  • 插入排序(直接插入排序、折半插入排序和希尔排序)
  • C++中析构函数
  • log4cpp进阶指南
  • LeetCode 每日一题 2025/4/21-2025/4/27
  • 关于Spark知识点与代码测试的学习总结
  • element-ui dropdown 组件源码分享
  • 【c++】AVL树模拟实现
  • Comfy UI 笔记
  • 文章记单词 | 第47篇(六级)
  • 面试记录1-春招补录0427
  • 基础学习:(9)vit -- vision transformer 和其变体调研
  • 《大型网站技术架构-核心原理与案例分析》笔记
  • UV工具的安装与使用
  • Leetcode:283. 移动零
  • Scala 函数柯里化及闭包
  • 343. 整数拆分
  • Tailwind CSS 实战:基于 Kooboo 构建企业官网页面(二)
  • 【SF】在 Android 显示系统中,图层合成方式 Device 和 Client 的区别
  • 信创系统资产清单采集脚本:主机名+IP+MAC 一键生成 CSV
  • 汽车产业链主表及类别表设计
  • 2、Linux操作系统下,ubuntu22.04版本安装搜狗输入法