力扣-柠檬水找零
在柠檬水摊上,每–杯柠檬水的售价为5美元
顾客排队购买你的产品,(按账 单bills支付的顺序)一次购买一一杯。
每位顾客只买一-杯柠檬水,然后向你付5美元、10美元或20美元。
你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付5美元。
注意,一开始你手 头没有任何零钱。
如果你能给每位顾客正确找零,返回true,否则返回false。
提示:
●0 <= bills. length <= 10000
●bills[i]不是5就是10或是20
解析
读题可知: - -开始我们手上是没有钱的,所以当第一位顾客支付10美元或者20美元的时候,都不能完成交易。由于最大面额是20美元,所以能用作找零的面额只有5美元和10美元。如果零钱不够无法找零,则交易失败。
下面开始组合条件:
function billsChange(bills) {
// 目前手上可以用作找零的钱
let $5=0,$10=0;
// 第一位客户金额不足5美元时,交易失败
if(bills[0]!==5) return false;
for (const money of bills) {
// 收到的是5美元的时候
if(money==5){
$5++;
continue;
}
// 收到的是10美元
if(money==10){
// 手里没有5美元的时候
if ($5<=0) return false;
// 手里有5美元的时候
$5--;
$10++;
continue;
}
// 收到的是20美元的时候
if($5>0 && $10>0){
// 手里既有5美元 又有10美元的时候
$5--;
$10--;
continue;
}
if($5>3){
//手里有大于三张5美元的时候
$5-=3;
continue;
}
return false;
}
return true;
}
console.log(billsChange([5,5,10,20]))
今天的分享就到这了,如果有更好的想法,欢迎评论区指出,一起讨论哟!
喜欢记得 点赞~ 关注+收藏哟!