65 柠檬水找零

问题描述:在柠檬水摊上,每一杯柠檬水售价为5元,顾客排队购买你的产品,(按账单bills支付的顺序)一次购买一杯,每位顾客只买一倍柠檬水,然后想你付5美元、10美元或者20美元,你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付5美元。注意,一开始手头没有任何零钱,如果你能给每位顾客正确找零,返回true,否则返回false。

贪心算法求解:定义两个变量记录五元和10元的数量,通过for循环遍历bills账单,当某一项不能做到找零时,返回false,否则返回true,且对于20元的找零,先用10元找零,不行再用5元。

public Boolean charge(int [] bills)
{
int five=0;
int ten=0;
for(int i=0;i0)
{
ten+=1;
five-=1;
}else
{
return false;
}
}else
{
if(ten>0&&five>0)
{
ten--;
five--;
}else if(five>=3)
{
five-=3;
}else
{
return false;
}
}
}
​​​​​​​return true;
}

你可能感兴趣的:(JAVA刷题500道,贪心算法,算法,数据结构,java,开发语言)