860. 柠檬水找零
在柠檬水摊上,每一杯柠檬水的售价为 5 美元。
顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。
每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。
注意,一开始你手头没有任何零钱。
如果你能给每位顾客正确找零,返回 true ,否则返回 false 。
该题由于要找零的范围很小,所以用if判断就可以解决了,具体代码如下(C++版):
class Solution {
public:
bool lemonadeChange(vector<int>& bills) {
int fiveNum=0, tenNum=0;
for(int bill : bills)
{
if(bill == 5) fiveNum++;
else if(bill == 10)
{
if(fiveNum==0) return false;
else
{
fiveNum--;
tenNum++;
}
}
else
{
if(fiveNum>0 && tenNum>0)
{
fiveNum--;
tenNum--;
}
else if(fiveNum>=3)
{
fiveNum-=3;
}
else return false;
}
}
return true;
}
};
同样思路Scala版:
object Solution {
def lemonadeChange(bills: Array[Int]): Boolean = {
var fiveNum:Int=0
var tenNum:Int=0
bills.foreach(i => i match {
case 5=> fiveNum+=1
case 10=>{
if(fiveNum>0)
{
fiveNum-=1
tenNum+=1
}
else return false
}
case _=>{
if(fiveNum>0 && tenNum>0)
{
fiveNum-=1
tenNum-=1
}
else if(fiveNum>=3)
{
fiveNum-=3
}
else return false
}
})
return true
}
}
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/lemonade-change