PS: 本题目摘自 LeetCode 860 原题 柠檬水找零,一道贪心算法问题

题目描述

在柠檬水摊上,每一杯柠檬水的售价为 5 美元。
顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。
每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。
你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。
注意,一开始你手头没有任何零钱。
如果你能给每位顾客正确找零,返回 true ,否则返回 false

示例 1:

输入:[5,5,5,10,20]
输出:true
解释:
前 3 位顾客那里,我们按顺序收取 3 张 5 美元的钞票。
第 4 位顾客那里,我们收取一张 10 美元的钞票,并返还 5 美元。
第 5 位顾客那里,我们找还一张 10 美元的钞票和一张 5 美元的钞票。
由于所有客户都得到了正确的找零,所以我们输出 true。

示例 2:

输入:[5,5,10]
输出:true

示例 3:

输入:[10,10]
输出:false

示例 4:

输入:[5,5,10,10,20]
输出:false
解释:
前 2 位顾客那里,我们按顺序收取 2 张 5 美元的钞票。
对于接下来的 2 位顾客,我们收取一张 10 美元的钞票,然后返还 5 美元。
对于最后一位顾客,我们无法退回 15 美元,因为我们现在只有两张 10 美元的钞票。
由于不是每位顾客都得到了正确的找零,所以答案是 false。

提示:
  0 <= bills.length <= 10000
  bills[i] 不是 5 就是 10 或是 20

题解思路

  1. 收到 5 美元:不用找零,留下 5 美元
  2. 收到 10 美元:如果有 5 美元则返还顾客 5 美元,留下 10 美元,如果没有就 false
  3. 收到 20 美元:如果有 15 美元则返还顾客 15 美元(15 美元优先返还 10 + 5,其次 5 + 5 + 5),留下 20 美元,如果没有就 false
  4. 如果 1,2,3 均没有返回 false,则结果为 true

AC代码

class Solution {public:bool lemonadeChange(vector<int>& bills) {int fivedollar = 0;int tendollar = 0;for(int bill: bills) {if(bill == 5) { fivedollar++; }else if(bill == 10 && fivedollar > 0) { fivedollar--; tendollar++; }else {if(tendollar > 0 && fivedollar > 0) { tendollar--; fivedollar--; }else if(fivedollar >= 3) { fivedollar -= 3; }else { return false; }}}return true;}
};

LeetCode[860] 柠檬水找零 (贪心)相关推荐

  1. Leetcode 860. 柠檬水找零(贪心) 记录反思

    有的时候就应该找点简单题目提升一下自己的驱动力 有三种情况 情况一:账单是5,直接收下. 情况二:账单是10,消耗一个5,增加一个10 情况三:账单是20,优先消耗一个10和一个5,否则,消耗三个5 ...

  2. 150. Leetcode 860. 柠檬水找零 (贪心算法-基础题目)

    有如下三种情况: •情况一:账单是5,直接收下. •情况二:账单是10,消耗一个5,增加一个10 •情况三:账单是20,优先消耗一个10和一个5,如果不够,再消耗三个 5 class Solution ...

  3. leetcode.860. 柠檬水找零

    860. 柠檬水找零 在柠檬水摊上,每一杯柠檬水的售价为 5 美元. 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯. 每位顾客只买一杯柠檬水,然后向你付 5 美元.10 美元或 ...

  4. leetcode: 860. 柠檬水找零

    860. 柠檬水找零 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/lemonade-change/ 在柠檬水摊上,每一杯柠檬水的售价为 5 美元. ...

  5. LeetCode 860. 柠檬水找零(贪心)

    1. 题目 在柠檬水摊上,每一杯柠檬水的售价为 5 美元. 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯. 每位顾客只买一杯柠檬水,然后向你付 5 美元.10 美元或 20 美 ...

  6. leetcode 860. 柠檬水找零(贪心算法)

    在柠檬水摊上,每一杯柠檬水的售价为 5 美元. 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯. 每位顾客只买一杯柠檬水,然后向你付 5 美元.10 美元或 20 美元.你必须给 ...

  7. LeetCode#860: 柠檬水找零

    题目(LeetCode#860) 在柠檬水摊上,每一杯柠檬水的售价为 5 美元. 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯. 每位顾客只买一杯柠檬水,然后向你付 5 美元. ...

  8. LeetCode 860. 柠檬水找零 做题小结

    题目 在柠檬水摊上,每一杯柠檬水的售价为 5 美元.顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯.每位顾客只买一杯柠檬水,然后向你付 5 美元.10 美元或 20 美元.你必须 ...

  9. LeetCode 860.柠檬水找零(C++)

    在柠檬水摊上,每一杯柠檬水的售价为 5 美元. 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯. 每位顾客只买一杯柠檬水,然后向你付 5 美元.10 美元或 20 美元.你必须给 ...

最新文章

  1. python 靶心_手把手教你使用Python实战反欺诈模型|原理+代码
  2. [转载zz] Python3 输入和输出之序列化与反序列化
  3. Git基础之(二十)——标签管理——创建标签
  4. 【入门经典】创建站点地图
  5. Android 基础(二十四) EditText
  6. 首次!海豚间像人类一样的交谈被水下麦克风记录
  7. linux 内核空间占用cpu百分比过高,linux下分析java程序占用CPU、内存过高
  8. Python 爬虫工程师必看,深入解读字体反爬虫
  9. success.ftlh与error.ftlh
  10. SpringMVC4 + Spring + MyBatis3 【转】
  11. Centos添加ip黑名单禁止某个ip访问,对登陆失败的主机进行封禁
  12. 取出被正则表达式匹配的值
  13. C++关键字 explicit
  14. 开源代码实现pppoe over l2tp方案
  15. 一刀工具箱 - URL链接编码解码工具
  16. 浅谈数据监控数据分析
  17. python- selenium-快眼看书-林深终有路
  18. 数据正常运行之后,突然遇见:CiteSpace will re-run the process and keep non-empty intervals only.问题
  19. HTML5在线电影网站设计 黑色的影视传媒公司网站(6页) HTML+CSS+JavaScript
  20. 【微信小程序】小程序实现文件的上传及预览,以PDF文件为例。

热门文章

  1. erase函数的使用(简便易懂)(有图)
  2. VS2017制作POV-LED取模软件 可对图片取模
  3. 斯坦福ChatGPT: Prompting, Instruction Finetuning, and RLHF
  4. 数据技术专家能力模型
  5. 刷脸支付营销广告一站式便捷的应用
  6. 当AI与音乐相遇,讯飞音乐用技术引领行业变革
  7. 像apro一样轻松地将复杂的Java对象与json相互转换
  8. 基于JAVA售楼系统计算机毕业设计源码+数据库+lw文档+系统+部署
  9. windows7微软官方_Microsoft Windows 7 | 第2部分
  10. 盖茨VS.乔布斯:左脑和右脑模式的PK(转)