题目链接:https://leetcode.com/problems/lemonade-change/description/
题意:有一队人按顺序来买水,有可能支付5,10或者20元,一瓶水5元,如果无法找钱,return false。注意一开始你一分钱都没有。
根据题意,可以分为以下几种情况:
①第一个人不是支付5元,那么直接return false。
②支付10元,至少需要一张5元
③支付20元,优先考虑一张10元,一张5元的情况,再考虑三张5元情况。
我是开了一个数组,记录5,10,20元的数量。
class Solution {
public:
bool lemonadeChange(vector<int>& bills) {
int flag[3] = {0,0,0}; //flag[0],flag[1],flag[2]分别代表5,10,20的数量
if(bills.size() == 0) return true;
if(bills.size() != 0 && bills[0] != 5) return false;
for(int i = 0;i < bills.size();i++){
if(bills[i] == 5){
flag[0]++;
}else if(bills[i] == 10){
if(flag[0] > 0){
flag[0]--;
flag[1]++;
}else{
return false;
}
}else{
if(flag[1] > 0 && flag[0] > 0){
flag[1]--;
flag[0]--;
flag[2]++;
}else if(flag[1] <= 0 && flag[0] >= 3){
flag[0] -= 3;
}else{
return false;
}
}
}
return true;
}
};