1. 程式人生 > 實用技巧 >2020-12-10 檸檬水找零

2020-12-10 檸檬水找零

題目



解題方法:模擬+貪心法

該題採用模擬買賣的方法,不必多說。值得一提的是其中運用到了一點貪心的思想,即收到20元時,應優先採取找零10元+5元的策略,而不是找零3個5元,因為5元更加通用,既能找零10元,也能找零20元。

程式碼實現:

class Solution {
public:
    bool lemonadeChange(vector<int>& bills) {
        int five, ten, twenty;
        five = ten = twenty = 0;

        for (int i = 0; i < bills.size(); i++) {
            if (bills[i] == 5) {
                five++;
                continue;
            } 
            if (bills[i] == 10) {
                if (five == 0)
                    return false;
                else {
                    ten++;
                    five--;
                }
            }
            if (bills[i] == 20) {
                // 這裡運用了貪心的思想,優先檢查能否使用10元+5元來找零
                if (ten > 0 && five > 0) {
                    five--;
                    ten--;
                    twenty++;
                } else if (five > 2){
                    five -= 3;
                    twenty++;
                } else {
                    return false;
                }
            }
        }
        return true;
    }
};

提交結果