- 算法
贪心 - 核心思想
用的sitch case,我以为会超出时间限制,没想到竟然过了。这道题我想有两个需要注意的点,记录不同零钱数目的数组长度为2即可,20的零钱没有意义;第二点是当使用的是20的零钱时,要优先使用10美刀,这里是贪心的使用。 - 代码
class Solution {
public boolean lemonadeChange(int[] bills) {
if(bills[0] == 10 || bills[0] == 20) return false;
int[] num = new int[2];
for(int i = 0;i < bills.length;i++){
switch(bills[i]){
case 5:
num[0] += 1;
break;
case 10:
if(num[0] == 0) return false;
num[0] -= 1;
num[1] += 1;
break;
case 20:
if(num[0] >= 1 && num[1] >= 1){
num[0] -= 1;
num[1] -= 1;
}else if(num[0] >= 3){
num[0] -= 3;
} else return false;
break;
}
}
return true;
}
}