Minimum Path Sum
MediumArrayDynamic ProgrammingMatrix
Solution
export function minPathSum(grid: number[][]): number {
const [N, M] = [grid.length, grid[0].length];
const memo: number[][] = new Array(N).fill(undefined).map(() => new Array(M).fill(-1));
const dp = (y: number, x: number) => {
if (y === 0 && x === 0) {
return grid[y][x];
}
if (y < 0 || x < 0) {
return Number.MAX_SAFE_INTEGER;
}
if (memo[y][x] !== -1) {
return memo[y][x];
}
memo[y][x] = Math.min(dp(y - 1, x), dp(y, x - 1)) + grid[y][x];
return memo[y][x];
};
return dp(N - 1, M - 1);
}