力扣刷题:860. 柠檬水找零(js)
题目:
在柠檬水摊上,每一杯柠檬水的售价为 5 美元。
顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。
每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。
注意,一开始你手头没有任何零钱。
如果你能给每位顾客正确找零,返回 true ,否则返回 false 。
难度:简单
题解:
遍历数组,定义变量记录找到的5和10的数量,在if判断中对齐进行或加或减的操作
ps:由于一开始手中没有零钱,所以[10,5,5]这种即使数组中的数符合条件,但是第一位的10无法找零,所以返回false
var lemonadeChange = function(bills) { var five = 0; var ten = 0; for (const bill of bills) { if (bill == 5) {//遍历找到数字5后的操作 five += 1; } else if (bill == 10) {//遍历找到数字10后的操作 if (five == 0) {//如果当前数组中没有5(因为一开始手里没有零钱,所以[10,5,5]这种即使后面有5,但是因为第一个找不开,所以返回的也是false) return false; } //数组中有5,那么5的数量减1,10的数量加1 five -= 1; ten += 1; } else {//只有三个面值,所以这个就是找到数字20后的操作 if (five > 0 && ten > 0) { //第一种找零的方法:10,5都有,那么给出一张10,一张5即可,此时10和5的数量-1. //20的数量不用记录,因为题目中用不到 five -= 1; ten -= 1; } else if (five >= 3) { //第二种找零的方法:有三张5,那么给出3张5也可找零此时5的数量-3 five -= 3; } else { //以上俩种方法都不满足,那么返回false return false; } } } return true; };
新手理解,若有误,请各位大佬指点,Thanks♪(・ω・)ノ

浙公网安备 33010602011771号