860. 柠檬水找零
在柠檬水摊上,每一杯柠檬水的售价为 5 美元。
顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。
每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。
注意,一开始你手头没有任何零钱。
如果你能给每位顾客正确找零,返回 true ,否则返回 false 。
Example
input |
---|
[5,5,5,10,20] |
output |
true |
input |
---|
[5,5,10] |
output |
true |
input |
---|
[5,5,10,10,20] |
output |
false |
Note
- 0 < = b i l l s . l e n g t h < = 10000 0 <= bills.length <= 10000 0<=bills.length<=10000
- b i l l s [ i ] bills[i] bills[i] 不是 5 5 5 就是 10 10 10 或是 20 20 20
思路
模拟题。。。
代码如下
class Solution {
public:
bool lemonadeChange(vector<int>& bills) {
int a,b;
a=b=0;
for(int i=0;i<bills.size();i++)
{
if(bills[i]==5)
a++;
else if(bills[i]==10)
{
if(a)
{
a--;
b++;
}
else
return false;
}
else
{
if(b&&a)
{
b--;
a--;
}
else if(a>=3)
a-=3;
else
return false;
}
}
return true;
}
};