3.27(动态规划)

3.27(动态规划)

Lc.931.下降路径最小和

给你一个 n x n方形 整数数组 matrix ,请你找出并返回通过 matrix下降路径最小和

下降路径 可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)。具体来说,位置 (row, col) 的下一个元素应当是 (row + 1, col - 1)(row + 1, col) 或者 (row + 1, col + 1)

  • point2
class Solution {
    public int minFallingPathSum(int[][] matrix) {
        int n = matrix.length;
        int[][] dp = new int[n][n];
        System.arraycopy(matrix[0], 0, dp[0], 0, n);//1.复制数组,第几行,下标,n是长度
        for (int i = 1; i < n; i++){
            for (int j = 0; j < n; j++){
                int mn = dp[i - 1][j];
                if (j > 0){
                    mn = Math.min(dp[i - 1][j - 1], mn);
                }
                if (j < n - 1){
                    mn = Math.min(dp[i - 1][j + 1], mn);//包括j=0
                }
                dp[i][j] = matrix[i][j] + mn;
            }
        }
        return Arrays.stream(dp[n - 1]).min().getAsInt();//2.返回n-1行中最小值
    }
}
posted @ 2026-03-27 21:03  shitnotme  阅读(5)  评论(0)    收藏  举报