ds-algo-study
Version:
Just experimenting with publishing a package
46 lines (38 loc) • 1.31 kB
JavaScript
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()