LeetCode题解 => 860.柠檬水找零(六十六)

柠檬水找零

一、LeetCode题解

瞧一瞧~
做题路线( ** = 当前阶段)
  • 阶段一(解题总数,单题题解数至上)**
  • 阶段二(解题质量至上)
  • 阶段三(算法思想至上)

二、算法题

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

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

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

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

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

示例

输入:[5,5,5,10,20]
输出:true
解释:

  • 前 3 位顾客那里,我们按顺序收取 3 张 5 美元的钞票。
  • 第 4 位顾客那里,我们收取一张 10 美元的钞票,并返还 5 美元。
  • 第 5 位顾客那里,我们找还一张 10 美元的钞票和一张 5 美元的钞票。
  • 由于所有客户都得到了正确的找零,所以我们输出 true。

解法一(循环)

  • 建立简易字典
  • 面额从大到小匹配
var lemonadeChange = function (bills) {
    const dollors = {5: 0, 10: 0, 20: 0};
    if(bills[0] !== 5) return false;
    for (let bill of bills) {
        console.log(bill);
        dollors[bill] += 1;

        if (bill === 10) dollors[5] -= 1;
        else if (bill === 20) {
            if (dollors[10] > 0) {
                dollors[5] -= 1;
                dollors[10] -= 1;
            } else dollors[5] -= 3;
        }
        if (dollors[5] < 0) return false;
    }
    return true
};

在这里插入图片描述

发布了263 篇原创文章 · 获赞 40 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/jbj6568839z/article/details/103977622