Skip to content

递推一比一翻译过来即可, 这里缩减了计算图, 让f[j]的值表示f[i+1][j], f[j+1]表示了f[i][j+1]

java
class Solution {
    /**
     * 递推一比一翻译过来即可, 这里缩减了计算图,
     * 让f[j]的值表示f[i+1][j], f[j+1]表示了f[i][j+1]
     */
    public int minPathSum(int[][] grid) {
        int m = grid.length, n = grid[0].length;
        int f[] = new int[n+1];
        Arrays.fill(f, Integer.MAX_VALUE);
        f[1] = 0;

        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                f[j+1] = Math.min(f[j], f[j+1]) + grid[i][j];
            }
        }
        return f[n];
    }
}

Personal Knowledge Base