UNPKG

ds-algo-study

Version:

Just experimenting with publishing a package

35 lines (32 loc) 817 B
function minCoinChange(coins, amount) { const cache = []; const minChange = (value) => { if (!value) { return []; } if (cache[value]) { return cache[value]; } let min = []; let newMin; let newAmount; for (let i = 0; i < coins.length; i++) { const coin = coins[i]; newAmount = value - coin; if (newAmount >= 0) { newMin = minChange(newAmount); } if ( newAmount >= 0 && (newMin.length < min.length - 1 || !min.length) && (newMin.length || !newAmount) ) { min = [coin].concat(newMin); // console.log('new Min ' + min + ' for ' + amount); } } return (cache[value] = min); }; return minChange(amount); } module.exports = minCoinChange;