解题思路:
得到最后的答案只需要知道上方一个的值和左边位置的值,取其中较小的和当前位置相加,数组除了第一行和第一列之外都是同样的计算方式
第一行只能从左边一路相加过来,第一列只能从上往下一路相加
最后输出数组最后一个值就是到达所在位置的最小值。
代码如下:
class Solution:
def minPathSum(self, grid: List[List[int]]) -> int:
m = len(grid)
n = len(grid[0])
# 第一列的数字操作
for i in range(m-1):
grid[i+1][0] = grid[i][0] + grid[i+1][0]
# 第一行的数字操作
for i in range(n-1):
grid[0][i+1] = grid[0][i] + grid[0][i+1]
# 除了第一行的和第一列的位置的计算
for i in range(m-1):
for j in range(n-1):
if grid[i+1][j] >= grid[i][j+1]:
grid[i+1][j+1] = grid[i][j+1] + grid[i+1][j+1]
else:
grid[i+1][j+1] = grid[i+1][j] + grid[i+1][j+1]
return grid[m-1][n-1]
结果如下:
- THE END -
最后修改:2022年8月22日
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://wangyuanzhuo.top/t64-%e6%9c%80%e5%b0%8f%e8%b7%af%e5%be%84%e5%92%8c/