Total Accepted: 9358 Total Submissions: 30791
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.
Note: You can only move either down or right at any point in time.
public class Solution {
public int minPathSum(int[][] grid) {
int[] dp = new int[grid[0].length];
dp[0] = grid[0][0];
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[0].length; j++) {
int path1 = Integer.MAX_VALUE;
int path2 = Integer.MAX_VALUE;
if (i > 0) path1 = dp[j] + grid[i][j];
if (j > 0) path2 = dp[j - 1] + grid[i][j];
if (i != 0 || j != 0) dp[j] = path1 < path2 ? path1 : path2;
}
}
return dp[dp.length - 1];
}
}