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]]))