
题目描述:
题解(java):
注意:存储钱数量的数组需要long类型,因为这里0 <= banknotesCount[i] <= 109,且总共 最多有 5000 次 withdraw 和 deposit 的调用,会导致cnt中部分值超过整型范围
class ATM {
int money[];
long count[];
public ATM() {
money=new int[]{20,50,100,200,500};
count=new long[]{0,0,0,0,0};
}
public void deposit(int[] banknotesCount) {
for(int i=0;i<5;i++){
count[i]+=banknotesCount[i];
}
}
public int[] withdraw(int amount) {
int need[]=new int[5];
for(int i=4;i>=0;i--){
// if(amount>=money[i]&&count[i]>0){
int CanNum=amount/money[i];
need[i]=CanNum>count[i]?(int)count[i]:CanNum;
amount-=need[i]*money[i];
// }
}
if(amount==0){
for(int i=0;i<5;i++){
count[i]-=need[i];
}
return need;
}
else{
int a[]={-1};
return a;
}
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)