860. 檸檬水找零
阿新 • • 發佈:2020-09-02
在檸檬水攤上,每一杯檸檬水的售價為 5 美元。
顧客排隊購買你的產品,(按賬單 bills 支付的順序)一次購買一杯。
每位顧客只買一杯檸檬水,然後向你付 5 美元、10 美元或 20 美元。你必須給每個顧客正確找零,也就是說淨交易是每位顧客向你支付 5 美元。
注意,一開始你手頭沒有任何零錢。
如果你能給每位顧客正確找零,返回 true ,否則返回 false 。
如果我們有一張 10 美元和一張 5 美元,那麼我們總會更願意這樣找零,這比用三張 5 美元進行找零更有利。
否則,如果我們有三張 5 美元的鈔票,那麼我們將這樣找零。
class Solution { public boolean lemonadeChange(int[] bills) { int five = 0, ten = 0; for (int bill: bills) { if (bill == 5) five++; else if (bill == 10) { if (five == 0) return false; five--; ten++; } else { if (five > 0 && ten > 0) { five--; ten--; } else if (five >= 3) { five -= 3; } else { return false; } } } return true; } }
本題關鍵:
如果顧客支付了 20 美元鈔票,我們必須找回 15 美元。如果我們有一張 10 美元和一張 5 美元,那麼我們總會更願意這樣找零,這比用三張 5 美元進行找零更有利。
否則,如果我們有三張 5 美元的鈔票,那麼我們將這樣找零。