原题网址:https://leetcode.com/problems/minimum-path-sum/
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[] sum = new int[grid[0].length];
for(int j=0; j<sum.length; j++) {
if (j==0) {
sum[j] = grid[0][j];
} else {
sum[j] = sum[j-1] + grid[0][j];
}
}
for(int i=1; i<grid.length; i++) {
int[] currentSum = new int[grid[i].length];
for(int j=0; j<grid[i].length; j++) {
if (j==0) {
currentSum[j] = sum[j] + grid[i][j];
} else {
currentSum[j] = Math.min(sum[j], currentSum[j-1]) + grid[i][j];
}
}
sum = currentSum;
}
return sum[grid[0].length-1];
}
}