leetcode------Minimum Path Sum

标题: Minimum Path Sum
通过率: 31.7%
难度: 中等

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.

前边做了一个类似的,跳格子,只能向右或者向下走,也就是动态规划了,在过渡一下就跟最短路径一样了。

本题的动态规划就是每一步的上一步一定是从上边或者左边来的,那么距离的累加就是F(i,j)=min(f(i-1,j),F(i,j-1))

有个小的地方就是先把第一行和第一列先累加起来,那么处理起来就是从第(1,1)位置开始计算,这样就不用去考虑边界的问题

代码如下:

 1 public class Solution {

 2     public int minPathSum(int[][] grid) {

 3         int m=grid.length,n=grid[0].length;

 4         for(int i=1;i<m;i++){

 5             grid[i][0]+=grid[i-1][0];

 6         }

 7         for(int j=1;j<n;j++){

 8             grid[0][j]+=grid[0][j-1];

 9         }

10         for(int i=1;i<m;i++){

11             for(int j=1;j<n;j++){

12                 grid[i][j]+=Math.min(grid[i-1][j],grid[i][j-1]);

13             }

14         }

15         return grid[m-1][n-1];

16     }

17 }

 

你可能感兴趣的:(LeetCode)