在柠檬水摊上,每一杯柠檬水的售价为 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

分析:

如果第一份账单不为5元,则肯定不能找零,返回false。之后的账单若为10元,则判断是否有5元的,若没有,则也不能找零,返回false,否则,5元的剩余数fiveCount自减,10元的余额数自增。若账单为20元,则找零有这两种情况,即5,5,5或10,5.若两种情况都可采用,优先选择10,5找零(因为5元既可以找10元的订单,又可以找20元的订单,尽量保留)。若这两种情况都不存在,则不能找零,返回false。当最后账单执行完,则成功全部找零,返回true。

代码实现:

public boolean lemonadeChange(int[] bills) {

if(bills[0] !=5){ //第一份账单不为5元,则不能找零,false

return false;

}

else{

MapmyMoney = new HashMap(); //通过Map形成映射,记录自己手中的钱

int fiveCount=1,tenCount=0;//定义5,10的张数,因为最大为20元,所以20元不能用来找零

myMoney.put(5, fiveCount); //初始化

myMoney.put(10, tenCount);

int length = bills.length; //订单长度

for(int i =1;i=3){ //5元的张数大于等于3,则可以找零,否则不能找零,false

fiveCount -= 3;

myMoney.put(5, fiveCount);

}

else{

return false;

}

}

}

}

return true; //若整个账单bills执行,则true

}

}

这是第一次实现的代码,执行时间为25ms

public boolean lemonadeChange(int[] bills) {

if(bills[0] != 5){ //第一份账单不为5,无法找零

return false;

}

else{

int fiveCount =1,tenCount=0; //初始化计数变量

int length = bills.length;

for(int i =1;i=3){

fiveCount -= 3;

}

else{

return false;

}

}

}

}

return true;

}

}

第二次实现的代码,执行时间为5ms

北京柠檬Java_leetcode 860 —柠檬水找零 java实现相关推荐

  1. 力扣860题 柠檬水找零 Java版

    class Solution {public boolean lemonadeChange(int[] bills) {// 五元张数int five = 0;// 十元张数int ten = 0;f ...

  2. LeetCode 860[Python]. 柠檬水找零 在柠檬水摊上,每一杯柠檬水的售价为 5 美元。 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。

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

  3. Leetcode 每日一题——860. 柠檬水找零

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

  4. LeetCode每日一题--860. 柠檬水找零(贪心)

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

  5. 【LeetCode】两道贪心算法题目-455分发饼干,860柠檬水找零

    文章目录 第455题:分发饼干 第860题:柠檬水找零 第455题:分发饼干 题目描述 假设你是一位很棒的家长,想要给你的孩子们一些小饼干.但是,每个孩子最多只能给一块饼干.对每个孩子 i ,都有一个 ...

  6. Suzy想吃烤蛋挞了Day35 | 贪心算法进行时:860. 柠檬水找零,406. 根据身高重建队列,452. 用最少数量的箭引爆气球

    860. 柠檬水找零 solution 不要漏掉的一种情况是:如果收到了20,可以找10+5,或者5+5+5 class Solution:def lemonadeChange(self, bills ...

  7. LeetCode[860] 柠檬水找零 (贪心)

    PS: 本题目摘自 LeetCode 860 原题 柠檬水找零,一道贪心算法问题 题目描述 在柠檬水摊上,每一杯柠檬水的售价为 5 美元. 顾客排队购买你的产品,(按账单 bills 支付的顺序)一次 ...

  8. 代码随想录35——贪心:860柠檬水找零、406根据身高重建队列、452用最少数量的箭引爆气球

    文章目录 1.860柠檬水找零 1.1.题目 1.2.解答 2.406根据身高重建队列 2.1.题目 2.2.解答 3.452用最少数量的箭引爆气球 3.1.题目 3.2.解答 1.860柠檬水找零 ...

  9. leetcode.860. 柠檬水找零

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

最新文章

  1. msvcrt.lib和LIBCD.lib链接冲突
  2. 原创 | 深度学习框架比较,我该选择哪一个?
  3. 从手机App通过WebSocket向浏览器推送数据
  4. 开机启动失败_电脑常见开机引导错误的解决方法
  5. java第一章_java 第一章
  6. java赋值兼容原则,多态问题抛出(赋值兼容性原则遇上父类与子类同名函数的时候)...
  7. 设置时区,时间,日期的脚本
  8. Linux下grafana安装方式
  9. SpringBoot设置外置tomcat
  10. 《麦肯锡方法》第四部分 麦肯锡生存之道 第17-19章-思维导图
  11. 尼康d850相机参数测试软件,尼康D850 这可能是你唯一需要的单反相机
  12. 英伟达显卡驱动历史版本
  13. codeIgniter 4升级使用
  14. 使用get-pip.py 安装python2 的pip
  15. python tensorflow车型识别(一):建立数据
  16. FOR ALL ENTRIES IN
  17. 深度学习机器学习面试题(理论基础)
  18. ubuntu teamviewer
  19. CAN2.0A 和CAN2.0B
  20. Windows10 重装系统后显示字体不清楚的问题如何解决

热门文章

  1. 加拿大 计算机 硕士 授课型,说真的!加拿大研究型硕士和授课型硕士的区别你知道吗?...
  2. java treeview控件,TreeView下载
  3. 北师珠有计算机学吗,有时,我真的不知道我专业是干嘛的。
  4. mysql 分组内求差
  5. Session的作用及原理
  6. 【WAF剖析】——SQL注入之安全狗bypass深度剖析
  7. paper3:UV-GAN: Adversarial Facial UV Map Completion for Pose-invariant Face Recognition
  8. Excel工作表密码破解
  9. www.cqyc.com:8888 10116 - 像素
  10. C语言float变量精度,float部类的精度究竟是多少