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.
Naive Way:第一眼就觉得是DP的题。而且逻辑应该就是取左边和上边来的路径较小的那支。
算法复杂度O(nm), space O(1),利用原来矩阵存贮中间结果。
public class Solution {
public int minPathSum(int[][] grid) {
// DP
if(grid.length==0){return 0;}
// base case
for(int i = 1;i < grid.length;i++)
grid[i][0] += grid[i-1][0];
for(int j = 1;j < grid[0].length;j++)
grid[0][j] += grid[0][j-1];
// iteration
for(int i = 1;i < grid.length;i++)
for(int j = 1;j < grid[0].length;j++)
grid[i][j] += Math.min(grid[i-1][j],grid[i][j-1]);
return grid[grid.length-1][grid[0].length-1];
}
}
No comments:
Post a Comment