本文最后更新于608 天前,其中的信息可能已经过时,如有错误请发送邮件到tomding1065@gmail.com
https://programmercarl.com/0860.%E6%9F%A0%E6%AA%AC%E6%B0%B4%E6%89%BE%E9%9B%B6.html
1.本题看起来比较复杂其实可以的结算方式都已经固定,只要将直观的逻辑写出来即可,唯一贪心的部分就是找零10元的时候优先使用10 + 5的形式。
CPP
class Solution {
public:
bool lemonadeChange(vector<int>& bills) {
int five = 0;
int ten = 0;
for(int bill : bills){
if(bill == 5){
five++;
}
if(bill == 10){
if(five > 0){
five--;
ten++;
}else return false;
}
if(bill == 20){
if(five > 0 && ten > 0){
five--;
ten--;
}else if(five >= 3){
five -= 3;
}else return false;
}
}
return true;
}
};