1. 程式人生 > 實用技巧 >力扣刷題:860. 檸檬水找零(js)

力扣刷題: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; };