32 lines
650 B
JavaScript
32 lines
650 B
JavaScript
/**
|
|
* @param {number[]} bills
|
|
* @return {boolean}
|
|
*/
|
|
export const lemonadeChange = function (bills) {
|
|
const map = new Map()
|
|
|
|
while (bills.length) {
|
|
const money = bills.shift()
|
|
|
|
if (money === 5) {
|
|
map.set(5, (map.get(5) || 0) + 1)
|
|
} else {
|
|
let change = money - 5
|
|
while (change !== 0 && change - 10 > 0 && map.get(10) > 0) {
|
|
map.set(10, map.get(10) - 1)
|
|
change -= 10
|
|
}
|
|
|
|
while (change !== 0 && map.get(5) > 0) {
|
|
map.set(5, map.get(5) - 1)
|
|
change -= 5
|
|
}
|
|
|
|
if (change !== 0) return false
|
|
map.set(money, (map.get(money) || 0) + 1)
|
|
}
|
|
}
|
|
|
|
return true
|
|
}
|