0
点赞
收藏
分享

微信扫一扫

860. 柠檬水找零

蓝哆啦呀 2022-03-30 阅读 55

题目

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

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

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

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

示例:
在这里插入图片描述

思路

class Solution {
    public boolean lemonadeChange(int[] bills) {
        int count1 = 0; // 用来记录5的个数
        int count2 = 0; // 用来记录10的个数
        int count3 = 0; // 用来记录20的个数
        for(int i = 0; i < bills.length; i++){
            if(bills[i] == 5){
                count1++;
            }
            if(bills[i] == 10){
                if(count1 < 0)  return false;
                count1--;
                count2++;
            }
            if(bills[i] == 20){
                //优先消耗10美元,因为5美元的找零用处更大,能多留着就多留着
                if(count1 > 0 && count2 > 0){
                    count1--;
                    count2--;
                }else if(count1 >= 3){
                    count1 = count1 -3;
                }else{
                    return false;
                }
            }
            
        }
        return true;

    }
}
举报

相关推荐

0 条评论