leetcode64. Minimum Path Sum

来源:互联网 发布:上古卷轴5御姐捏脸数据 编辑:程序博客网 时间:2024/06/05 09:47

64. 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) {        if (grid == null || grid.length == 0) {            return -1;        }        if (grid[0] == null || grid[0].length == 0) {            return -1;        }        int row = grid.length;        int col = grid[0].length;        for (int i = 1; i < row; i++) {            grid[i][0] = grid[i - 1][0] + grid[i][0];        }        for (int j = 1; j < col; j++) {            grid[0][j] = grid[0][j - 1] + grid[0][j];        }        for (int i = 1; i < row; i++) {            for (int j = 1; j < col; j++) {                grid[i][j] = Math.min(grid[i - 1][j], grid[i][j - 1]) + grid[i][j];            }        }        return grid[row - 1][col - 1];    }}

这里写图片描述

解法二

边界条件放在一起判断。

public class Solution {    public int minPathSum(int[][] grid) {        if (grid == null || grid.length == 0) {            return -1;        }        if (grid[0] == null || grid[0].length == 0) {            return -1;        }        int row = grid.length;        int col = grid[0].length;        for (int i = 0; i < row; i++) {            for (int j = 0; j < col; j++) {                if (i == 0 && j != 0) {                    grid[i][j] = grid[0][j - 1] + grid[i][j];                } else if (i != 0 && j == 0) {                    grid[i][j] = grid[i - 1][0] + grid[i][j];                } else if (i == 0 && j == 0) {                    grid[i][j] = grid[i][j];                } else {                    grid[i][j] = Math.min(grid[i - 1][j], grid[i][j - 1]) + grid[i][j];                }            }        }        return grid[row - 1][col - 1];    }}

这里写图片描述

1 0
原创粉丝点击