(coins, amount)
| 20 | * @params {Number} amount |
| 21 | */ |
| 22 | export const coinChangeMin = (coins, amount) => { |
| 23 | const map = { 0: 1 } |
| 24 | for (let i = 1; i <= amount; i++) { |
| 25 | let min = Infinity |
| 26 | for (const coin of coins) { |
| 27 | if (i < coin) continue |
| 28 | min = Math.min(min, 1 + map[i - coin]) |
| 29 | } |
| 30 | map[i] = min |
| 31 | } |
| 32 | return map[amount] === Infinity ? -1 : map[amount] - 1 |
| 33 | } |