矩陣的最小路徑和

2021-09-17 04:29:18 字數 1231 閱讀 6215

題目:

給定乙個矩陣m,從左上角開始每次只能向右或者向下走,最後達到右下角的位置,路徑上所有的數字累加起來就是路徑和,返回所有的路徑中最小的路徑和。

舉例:

給定的m如下:

1 3 5 9

8 1 3 4

5 0 6 1

8 8 4 0

路徑1,3,1,0,6,1,0是所有路徑中路徑和最小的,所以返回12。

**實現:

方法一:

/** * 借助m*n的輔助空間來解決問題

* @param nums

* @return

*/public static int getminpathsum1(int nums)

int row = nums.length;

int col = nums[0].length;

int dp = new int[row][col];

dp[0][0] = nums[0][0];

for(int i = 1; i < row; i++)

for(int j = 1; j < col; j++)

for(int i = 1; i < row; i++)

} return dp[row-1][col-1];

}

方法二:

/**

* 借助於m*1或者1*n的輔助空間

* @return

*/public static int getminpathsum2(int nums)

int more = math.max(nums.length, nums[0].length); //得到行與列的較大值為more

int less = math.min(nums.length, nums[0].length); //得到行與列的較小值為less

boolean rowmore = more == nums.length; //行數是不是大於列數

int arr = new int[less]; //輔助空間僅為行或者列的最小值

arr[0] = nums[0][0];

for(int i = 1; i < less; i++)

for(int i = 1; i < more; i++)

} return arr[less-1];

}

參考:

矩陣的最小路徑和

準備校招的!這些是一本書的筆記 程式設計師 面試指南 it名企演算法與資料結構題目最優解 左程雲 給定乙個矩陣m,從左上角開始每次只能向右或者向下走,最後到達右下角的位置,路徑上所有的數字累加起來就是路徑和,返回所有的路徑中最小的路徑和 舉例 如果給定的m如下 135 9 813 4 506 1 8...

矩陣的最小路徑和

給定乙個矩陣m,從左上角開始每次只能向右或者向下走,最後到達右下角的位置,路徑上所有的數字累加起來就是路徑和,返回所有的路徑中最小的路徑和。方法一 遞迴 coding utf 8 defsolution m,l n l m 0 0 if len m 1 and len m 0 1 return l ...

矩陣的最小路徑和

給定乙個矩陣matrix,從左上角開始每次只能向右或者向下走,最後到達右下角的位置,路徑上所有的數字累加起來就是路徑和,返回所有的路徑中的最小路徑和。如果給定的矩陣matrix如下 其中路徑1,3,1,0,6,1,0是所有路徑中路徑和最小的,所以返回12。下面我們使用遞迴的方法來處理這個問題。假設現...