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; } };