Design an ATM Machine LeetCode solution in JavaScript

1
var ATM = function () {
2
this.bankNotes = new Array(5).fill(0);
3
this.banksNotesValue = [20, 50, 100, 200, 500];
4
};
5

6
/**
7
* @param {number[]} banknotesCount
8
* @return {void}
9
*/
10
ATM.prototype.deposit = function (banknotesCount) {
11
for (let i = 0; i < 5; i++) {
12
this.bankNotes[i] += banknotesCount[i];
13
}
14
return this.bankNotes;
15
};
16

17
/**
18
* @param {number} amount
19
* @return {number[]}
20
*/
21
ATM.prototype.withdraw = function (amount) {
22
let remain = amount;
23
let usedBankNotes = new Array(5).fill(0);
24
let temp = [...this.bankNotes];
25
for (let i = 4; i >= 0; i--) {
26
if (temp[i] > 0 && remain >= this.banksNotesValue[i]) {
27
const bankNote = Math.floor(remain / this.banksNotesValue[i]);
28
const maxCanUse = Math.min(temp[i], bankNote);
29
usedBankNotes[i] = maxCanUse;
30
temp[i] -= maxCanUse;
31

32
remain -= maxCanUse * this.banksNotesValue[i];
33
}
34
}
35

36
if (remain > 0) {
37
return [-1];
38
} else {
39
this.bankNotes = temp;
40
return usedBankNotes;
41
}
42
};
43

44
/**
45
* Your ATM object will be instantiated and called as such:
46
* var obj = new ATM()
47
* obj.deposit(banknotesCount)
48
* var param_2 = obj.withdraw(amount)
49
*/

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0