題目:
給定乙個矩陣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。下面我們使用遞迴的方法來處理這個問題。假設現...