題目
給定一個(gè)包含非負(fù)整數(shù)的 m x n 網(wǎng)格,請(qǐng)找出一條從左上角到右下角的路徑,使得路徑上的數(shù)字總和為最小。
說明:每次只能向下或者向右移動(dòng)一步。
示例:
輸入:
[
[1,3,1],
[1,5,1],
[4,2,1]
]
輸出: 7
解釋: 因?yàn)槁窂?1→3→1→1→1 的總和最小。
解題思路
def minPathSum(self, grid: [[int]]) -> int:
rowLen = len(grid[0])
colLen = len(grid)
countGrid = [[0]*rowLen for i in range(colLen)]#初始化統(tǒng)計(jì)步數(shù)矩陣
countGrid[0][0] = grid[0][0]
for i in range(1, rowLen):
countGrid[0][i] = countGrid[0][i-1] + grid[0][i]
for j in range(1, colLen):
countGrid[j][0] = countGrid[j-1][0] + grid[j][0]
# print(countGrid)
for i in range(1, rowLen):##每個(gè)步數(shù)元素,存儲(chǔ)從左邊和上邊的最小值,再加上自身的值,為自己所在元素的最小步數(shù)
for j in range(1, colLen):
# print("{} {}".format(j, i))
countGrid[j][i] = min(countGrid[j][i-1], countGrid[j-1][i]) + grid[j][i]
return countGrid[colLen-1][rowLen-1]