力扣刷題:860. 檸檬水找零(js)
阿新 • • 發佈:2020-12-10
題目:
在檸檬水攤上,每一杯檸檬水的售價為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; };