给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。

    说明:每次只能向下或者向右移动一步。

    示例:

    输入:

    [

    [1,3,1],

    [1,5,1],

    [4,2,1]

    ]

    输出: 7

    解释: 因为路径 1→3→1→1→1 的总和最小。

    来源:力扣(LeetCode)

    链接:https://leetcode-cn.com/problems/minimum-path-sum

    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    这种题做烂了

    1. class Solution {
    2. public int minPathSum(int[][] grid) {
    3. if (grid == null || grid.length == 0 || grid[0].length == 0) return 0;
    4. int rowLen = grid.length;
    5. int columnLen = grid[0].length;
    6. for (int i = columnLen - 2; i > -1; i--) {
    7. grid[rowLen - 1][i] += grid[rowLen - 1][i + 1];
    8. }
    9. for (int j = rowLen - 2; j > -1; j--) {
    10. grid[j][columnLen - 1] += grid[j + 1][columnLen - 1];
    11. }
    12. for (int r = rowLen - 2; r > -1; r--) {
    13. for (int c = columnLen - 2; c > -1; c--) {
    14. grid[r][c] += Math.min(grid[r][c + 1], grid[r + 1][c]);
    15. }
    16. }
    17. return grid[0][0];
    18. }
    19. }