leetcode 931. Minimum Falling Path Sum

O(N) space and O(M * N) time solution, where M, N is A's row number and column number

class Solution {
    public int minFallingPathSum(int[][] A) {
        int M = A.length, N = A[0].length;
        int[] d = new int[N];
        for (int i = 0; i < N; ++i) d[i] = A[0][i];
        for (int i = 1; i < M; ++i) {
            int prev = 0;
            for (int j = 0; j < N; ++j) {
                int current = d[j];
                if (j != 0) d[j] = Math.min(d[j], prev);
                if (j != N - 1) d[j] = Math.min(d[j], d[j + 1]);
                d[j] += A[i][j];
                prev = current;
            }
        }
        int ret = Integer.MAX_VALUE;
        for (int i = 0; i < N; ++i) ret = Math.min(d[i], ret);
        return ret;
    }
}
posted on 2019-03-28 07:46  王 帅  阅读(84)  评论(0编辑  收藏  举报