牛客NC59 矩阵的最小路径和 (动态规划,压缩空间的动态规划)

原题链接

解题方法

  • 暴力递归(时间复杂度过高)
  • 动态规划
  • 压缩空间的动态规划(可以降低空间复杂度)

暴力递归(时间复杂度过高)

每个位置都尝试向右走和向左走,时间复杂度较高,为 O(2 ^ (n * m))

public class Solution{
   
    private int minPathSum;

    /**
     * @param matrix int整型二维数组 the matrix
     * @return int整型
     */
    public int minPathSum (int[][] matrix) {
   
        // write code here
        int n = matrix.length;
        if (n == 0) return 0;
        int m = matrix[0].length;

        minPathSum = Integer.MAX_VALUE;
        findMinPathSum(0, 0, n - 1, m - 1, matrix, 0);

        return minPathSum;
    }
    /**
     * 暴力递归,每个位置都尝试向右和向下两种走法,
     *      时间复杂度较高,为 O(2 ^ (n * m))
     * @param matrix int整型二维数组 the matrix
     * @return int整型
     */
    private void findMinPathSum(int i, int j, int maxI, int maxJ, int[][] matrix, int pathSum) {
   <

你可能感兴趣的:(数据结构与算法,牛客网算法题,动态规划,算法,数据结构)