ds-algo-study
Version:
Just experimenting with publishing a package
49 lines (40 loc) • 1.2 kB
JavaScript
// Problem Statement => https://www.youtube.com/watch?v=lBRtnuxg-gU
const minCostPath = ( matrix ) => {
/*
Find the min cost path from top-left to bottom-right in matrix
>>> minCostPath([[2, 1], [3, 1], [4, 2]])
>>> 6
*/
const n = matrix.length
const m = matrix[ 0 ].length
// moves[i][j] => minimum number of moves to reach cell i, j
const moves = new Array( n )
for ( let i = 0; i < moves.length; i++ ) moves[ i ] = new Array( m )
// base conditions
moves[ 0 ][ 0 ] = matrix[ 0 ][ 0 ] // to reach cell (0, 0) from (0, 0) is of no moves
for ( let i = 1; i < m; i++ ) moves[ 0 ][ i ] = moves[ 0 ][ i - 1 ] + matrix[ 0 ][ i ]
for ( let i = 1; i < n; i++ ) moves[ i ][ 0 ] = moves[ i - 1 ][ 0 ] + matrix[ i ][ 0 ]
for ( let i = 1; i < n; i++ ) {
for ( let j = 1; j < m; j++ ) {
moves[ i ][ j ] = Math.min( moves[ i - 1 ][ j ], moves[ i ][ j - 1 ] ) + matrix[ i ][ j ]
}
}
return moves[ n - 1 ][ m - 1 ]
}
const main = () => {
console.log(
minCostPath( [
[ 2, 1 ],
[ 3, 1 ],
[ 4, 2 ]
] )
)
console.log(
minCostPath( [
[ 2, 1, 4 ],
[ 2, 1, 3 ],
[ 3, 2, 1 ]
] )
)
}
main()