zoukankan      html  css  js  c++  java
  • 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。

    贪心

     1 bool lemonadeChange(int* bills, int billsSize){
     2     int num1=0;
     3     int num2=0;
     4     int flag=1;
     5     for(int i=0;i<billsSize;i++){
     6         if(bills[i]==5){
     7             num1++;
     8         }else if(bills[i]==10){
     9             if(num1){
    10                 num1--;
    11                 num2++;
    12             }else{
    13                 flag=0;
    14                 break;
    15             }
    16         }else if(bills[i]==20){
    17             if(num1&&num2){
    18                 num1--;
    19                 num2--;
    20             }else if(num1>=3){
    21                 num1-=3;
    22             }else{
    23                 flag=0;
    24                 break;
    25             }
    26         }
    27     }
    28     return flag;
    29 }
  • 相关阅读:
    [Java解惑]数值表达式
    Java使用LdAP获取AD域用户
    LDAP Error Codes
    Excel向上取整
    java中的三种取整函数
    Dwz手册的补充说明和常见问题
    【转】BSON数据格式
    go语言合并两个数组
    vscode远程修改文件('file': A system error occured )
    [转]Linux 桌面玩家指南:20. 把 Linux 系统装入 U 盘打包带走
  • 原文地址:https://www.cnblogs.com/wydxry/p/11043872.html
Copyright © 2011-2022 走看看