今天是第31天刷leetcode,立个flag,打卡60天,如果做不到,完成一件评论区点赞最高的挑战。
算法挑战链接
860. 柠檬水找零https://leetcode.cn/problems/lemonade-change/
第一想法
题目理解:是否满足找零钱的需求
仔细思考问题有如下三种情况:
- 情况一:账单是5,直接收下。
- 情况二:账单是10,消耗一个5,增加一个10
- 情况三:账单是20,优先消耗一个10和一个5,如果不够,再消耗三个5
只需要在找零钱的时候符合这三种情况即可。
代码如下
class Solution {
public boolean lemonadeChange(int[] bills) {
if (bills.length == 0) {
return true;
}
if (bills[0] > 5) {
return false;
}
int five = 1;
int ten = 0;
int twel =0;
for (int i = 1; i < bills.length; i++){
if (bills[i] == 20 && ten > 0){
ten--;
five--;
twel++;
}else if (bills[i] == 20 && ten <= 0){
twel++;
five -= 3;
}else if (bills[i] == 10){
five--;
ten++;
}else {
five++;
}
if (five < 0 || ten < 0 || twel < 0) {
return false;
}
}
return true;
}
}
这个好像没有什么难度