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

具体思路
- 如果是5,直接收下,并且记录零钱数量
- 如果是10,
- 先判断是否有5,有则收下,
- 没有就返回
false;
- 如果是20,
- 优先用完10进行找零,所以要判断10和5是否同时存在
- 否则,用3张5进行找零
- 执行完成,返回true;
具体代码
class Solution {
public:
bool lemonadeChange(vector<int>& bills) {
int Five = 0;
int Ten = 0;
for (int i = 0; i < bills.size(); i++) {
if (bills[i] == 5)
Five++;
if (bills[i] == 10) {
if (Five) {
Five--;
Ten++;
} else
return false;
}
if (bills[i] == 20) {
if (Ten && Five) {
Ten--;
Five--;
} else if (Five >= 3) {
Five -= 3;
} else
return false;
}
}
return true;
}
};
class Solution {
public boolean lemonadeChange(int[] bills) {
int fiveCount = 0;
int tenCount = 0;
for (int i = 0; i < bills.length; i++) {
if (bills[i] == 5) {
fiveCount++;
} else if (bills[i] == 10) {
if (fiveCount > 0) {
fiveCount--;
tenCount++;
} else {
return false;
}
} else {
if (tenCount > 0 && fiveCount > 0) {
tenCount--;
fiveCount--;
} else if (fiveCount >= 3) {
fiveCount -= 3;
} else {
return false;
}
}
}
return true;
}
}
评论(0)
暂无评论