情况都是自己提交,然后调试出来的。。没办法一下子全考虑到
判断 return false 的情况都是写在 大 if 里面的
class Solution {
public:
bool lemonadeChange(vector<int>& bills) {
// 遍历由多少个 5 、10
int count5 = 0;
int count10 = 0;
for(int i = 0; i < bills.size(); i++)
{
if(bills[i] == 5)
count5++;
if(bills[i] == 10)
{
count5--;
count10++;
if(count5 < 0)
return false;
}
if(bills[i] == 20)
{
if(count5 >= 1 && count10 >= 1) // 优先找 10 元的
{
count5--;
count10--;
}
else
{
count5 -= 3;
}
if(count5 < 0 || count10 < 0)
return false;
}
}
return true;
}
};