1. 程式人生 > 實用技巧 >860. 檸檬水找零

860. 檸檬水找零

860. 檸檬水找零

在檸檬水攤上,每一杯檸檬水的售價為 5 美元。 顧客排隊購買你的產品,(按賬單 bills 支付的順序)一次購買一杯。 每位顧客只買一杯檸檬水,然後向你付 5 美元、10 美元或 20 美元。你必須給每個顧客正確找零,也就是說淨交易是每位顧客向你支付 5 美元。 注意,一開始你手頭沒有任何零錢。 如果你能給每位顧客正確找零,返回 true ,否則返回 false 。
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 美元的鈔票,那麼我們將這樣找零。