题目链接:860. 柠檬水找零 - 力扣(LeetCode)
收的钱只能是5、10、20美元,分类讨论:收5美元无需找零;收10美元找零5元;收20美元找零15美元。其中对于找零15美元的方案有两种,此处涉及贪心算法:找零1张10美元+1张5美元、找零3张5美元,一定是方案一优先级高于方案二。
class Solution {
public:
bool lemonadeChange(vector<int>& bills) {
int five=0;
int ten=0;
for(auto e:bills)
{
if(e==5)
++five;
else if(e==10)
{
++ten;
if(five>0)
--five;
else
return false;
}
else//贪心算法
{
if(ten>0)
{
--ten;
if(five>0)
--five;
else
return false;
}
else
{
if(five>=3)
five-=3;
else
return false;
}
}
}
return true;
}
};