boxmoe_header_banner_img

Hello! 欢迎来到不如画七的空间!

加载中

文章导读

11.柠檬水找零


avatar
ensiezadi 2025年8月28日 45

柠檬水找零

题目

在柠檬水摊上,每一杯柠檬水的售价为 5 美元。

顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。

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

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

如果你能给每位顾客正确找零,返回 true ,否则返回 false 。

具体思路

  • 如果是5,直接收下,并且记录零钱数量
  • 如果是10,
    • 先判断是否有5,有则收下,
    • 没有就返回false
  • 如果是20,
    • 优先用完10进行找零,所以要判断10和5是否同时存在
    • 否则,用3张5进行找零
  • 执行完成,返回true;

具体代码

class Solution {
public:
    bool lemonadeChange(vector<int>& bills) {
        int Five = 0;
        int Ten = 0;
        for (int i = 0; i < bills.size(); i++) {
            if (bills[i] == 5)
                Five++;
            if (bills[i] == 10) {
                if (Five) {
                    Five--;
                    Ten++;
                } else
                    return false;
            }
            if (bills[i] == 20) {
                if (Ten && Five) {
                    Ten--;
                    Five--;
                } else if (Five >= 3) {
                    Five -= 3;
                } else
                    return false;
            }
        }
        return true;
    }
};

class Solution {
    public boolean lemonadeChange(int[] bills) {
        int fiveCount = 0;
        int tenCount = 0;
        for (int i = 0; i < bills.length; i++) {
            if (bills[i] == 5) {
                fiveCount++;
            } else if (bills[i] == 10) {
                if (fiveCount > 0) {
                    fiveCount--;
                    tenCount++;
                } else {
                    return false;
                }
            } else {
                if (tenCount > 0 && fiveCount > 0) {
                    tenCount--;
                    fiveCount--;
                } else if (fiveCount >= 3) {
                    fiveCount -= 3;
                } else {
                    return false;
                }
            }
        }
        return true;
    }
}


评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字
插入代码
不如画七
2025 年 10 月
 123456
78910111213
14151617181920
21222324252627
282930