UNPKG

ds-algo-study

Version:

Just experimenting with publishing a package

46 lines (38 loc) 1.31 kB
function change( coins, amount ) { const combinations = new Array( amount + 1 ).fill( 0 ) combinations[ 0 ] = 1 for ( let i = 0; i < coins.length; i++ ) { const coin = coins[ i ] for ( let j = coin; j < amount + 1; j++ ) { combinations[ j ] += combinations[ j - coin ] } } return combinations[ amount ] } function minimumCoins( coins, amount ) { // minimumCoins[i] will store the minimum coins needed for amount i const minimumCoins = new Array( amount + 1 ).fill( 0 ) minimumCoins[ 0 ] = 0 for ( let i = 1; i < amount + 1; i++ ) { minimumCoins[ i ] = Number.MAX_SAFE_INTEGER } for ( let i = 1; i < amount + 1; i++ ) { for ( let j = 0; j < coins.length; j++ ) { const coin = coins[ j ] if ( coin <= i ) { const subRes = minimumCoins[ i - coin ] if ( subRes !== Number.MAX_SAFE_INTEGER && subRes + 1 < minimumCoins[ i ] ) { minimumCoins[ i ] = subRes + 1 } } } } return minimumCoins[ amount ] } function main() { const amount = 12 const coins = [ 2, 4, 5 ] console.log( 'Number of combinations of getting change for ' + amount + ' is: ' + change( coins, amount ) ) console.log( 'Minimum number of coins required for amount :' + amount + ' is: ' + minimumCoins( coins, amount ) ) } main()