• 【每日一题-leetcode】860.柠檬水找零


    860.柠檬水找零

    1. 柠檬水找零

    难度简单106

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

    贪心

    /*
         问题细化 其实只需要考虑三种情况
         1.如果顾客给了5元  five++;
         2.如果顾客给了10元 five-- ten++;
         3.如果顾客给了20元 先用最大的钱 ten-- five-- or five-=3; 而20元的钱 我们是不能用于找零的 这里可以忽略
         
         time :O(n)
        */
        public boolean lemonadeChange(int[] bills) {
            if(bills == null || bills.length == 0){
                return false;
            }   
            int five = 0, ten = 0;//5元 10元的个数
            for(int bill : bills){
                if(bill == 5)   five++;
                else if(bill == 10){    five--; ten++;
                }else if(ten > 0){      ten--; five--;
                }else  five-=3;
                if(five<0){
                    return false;
                }
            }
            return true;
        }
    
  • 相关阅读:
    HDU 1348 Wall
    HDU 2202 最大三角形
    HDU 2215 Maple trees
    HDU 1147 Pick-up sticks
    HDU 1392 Surround the Trees
    风语时光
    HDU 1115 Lifting the Stone
    HDU 1086 You can Solve a Geometry Problem too
    HDU 2108 Shape of HDU
    HDU 3360 National Treasures
  • 原文地址:https://www.cnblogs.com/qxlxi/p/12860588.html
Copyright © 2020-2023  润新知