JSFiddle - React, Tailwind, and code Playground
by tammasr
JavaScript
var minPathSum = function(grid) {
if(grid.length === 0) {
return 0;
}
var m = grid.length;
var n = grid[0].length;
var paths = [];
// Initialize paths with 0
for(var i = 0; i < m; i++) {
var rowtemp = [];
for(var j = 0; j < n; j++) {
rowtemp.push(0);
}
paths.push(rowtemp);
}
//Initialize first row
paths[0][0] = grid[0][0];
for(var c = 1; c < n; c++) {
paths[0][c] = paths[0][c-1] + grid[0][c];
}
//Initialize first column
for(var r = 1; r < m; r++) {
paths[r][0] = paths[r - 1][0] + grid[r][0];
}
for(var row = 1; row < m; row++) {
for(var column = 1; column < n; column++){
var previous = Math.min(paths[row][column - 1], paths[row - 1][column]);
paths[row][column] = previous + grid[row][column];
}
}
return paths[m-1][n-1];
};
console.log(minPathSum([[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,16,17]]))