Skip to content
On this page

柠檬水找零

Question

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

每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。

注意,一开始你手头没有任何零钱。

给你一个整数数组 bills ,其中bills[i]是第 i 位顾客付的账。如果你能给每位顾客正确找零,返回true,否则返回 false

image-20230618105128052

思路

分别记录手头上的$5$10的个数,根据bills数组中的值动态变化,如果$5的个数小于0则返回false

js
var lemonadeChange = function(bills) {
    let doller5 = 0
    let doller10 = 0
    for(let i=0;i<bills.length;i++){
        if(bills[i]===5){
            doller5++
        }
        if(bills[i]===10){
            doller5--
            doller10++
        }
        if(bills[i]===20){
            if(doller10) {
                doller10--
                doller5--
            }else{
                doller5 -= 3
            }
        }
        if(doller5<0)   return false
    }
    return true
};