給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。
每次只能向下或者向右移動一步。
輸入:
[ [1,3,1],
[1,5,1],
[4,2,1]
]輸出: 7
解釋: 因為路徑 1→3→1→1→1 的總和最小。
1.假設有個2 × 2的二維陣列a,則a[0][0]到a[1][1]的路徑有a[0][0]到a[0][1]到a[1][1]
和a[0][0]到a[1][0]到a[1][1]
,所以乙個點的大小(路徑)取決於它左邊和上邊的點的大小(路徑);
2.現將第一列和第一行的每個元素都累加為前面所有元素和本身的和(從一維的角度看,陣列【1,2,3】中,第乙個元素到第二個元素的路徑和為3,乙個元素到第三個元素的路徑和為6,此時陣列變為【1,3,6】),此時的二維陣列變為:
[
[1 ,1+3 ,1+3+1],
[1+1 ,5 ,1],
[1+4+1 ,2 ,1]]即,
[ [1,4,5],
[2,5,1],
[6,2,1]
]
3.按照思路一的做法,獲得第乙個元素到每個元素的最短距離(最小累加值),如:
[
[1,4,5],
[2,5+min(4,2),1],
[6,2,1]]||
[ [1,4,5],
[2,7,1+min(5,7)],
[6,2+min(6,7),1]]||
[ [1,4,5],
[2,7,6],
[6,8,1+min(6,8)]]||
[ [1,4,5],
[2,7,6],
[6,8,7]
]
此時的grid[0][0]到grid[2][2]最短的路徑的長度為1+3+1+1+1=7(grid[0][0]——>grid[0][1]——>grid[0][2]——>grid[1][2]——>grid[2][2])
int minpathsum(int** grid, int gridsize, int* gridcolsize)
LeetCode 64 最小路徑和
題目描述 提示幫助 提交記錄 社群討論 閱讀解答 隨機一題 給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。說明 每次只能向下或者向右移動一步。示例 輸入 1,3,1 1,5,1 4,2,1 輸出 7 解釋 因為路徑 1 3 1 1 1 的總和...
LeetCode 64 最小路徑和
給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。說明 每次只能向下或者向右移動一步。示例 輸入 1,3,1 1,5,1 4,2,1 輸出 7 解釋 因為路徑 1 3 1 1 1 的總和最小。以輸入為 3 3 的網格為例,其中 m 3,n 3 1...
LeetCode 64 最小路徑和
題目 給定乙個包含非負整數的 m x n 網格,請找出一條從左上角到右下角的路徑,使得路徑上的數字總和為最小。說明 每次只能向下或者向右移動一步。示例 輸入 1,3,1 1,5,1 4,2,1 輸出 7 解釋 因為路徑 1 3 1 1 1 的總和最小。解題思路 1 由於路線只向下或者右走,所以在最上...