LeetCode——minimum-path-sum

Q:给定一个由非负整数填充的m x n的二维数组,现在要从二维数组的左上角走到右下角,请找出路径上的所有数字之和最小的路径。
注意:你每次只能向下或向右移动。
A:还是典型动态规划问题。

    public static int minPathSum(int[][] grid) {
        int size1 = grid.length;//行数
        int size2 = grid[0].length;//列数
        int[][] dp = new int[size1][size2];
        dp[0][0] = grid[0][0];
        for (int i = 1; i < size2; i++) {
            dp[0][i] = dp[0][i - 1] + grid[0][i];
        }
        for (int j = 1; j < size1; j++) {
            dp[j][0] = dp[j - 1][0] + grid[j][0];
        }
        int min = 0;
        for (int i = 1; i < size1; i++) {
            for (int j = 1; j < size2; j++) {
                min = Math.min(dp[i - 1][j], dp[i][j - 1]);
                dp[i][j] = min + grid[i][j];
            }
        }
        return dp[size1 - 1][size2 - 1];
    }

猜你喜欢

转载自www.cnblogs.com/xym4869/p/12533381.html