题目描述:
思路:
采用动态规划的方法,具体思路和之前几个路径问题类似,使用一个辅助二维数组tem,tem中第1行中的每个值是原数组值+tem左侧一个位置的值,tem中第1列中的每个值是原数组值+tem上侧一个位置的值。tem其余位置的值都是从左侧一个位置和上侧一个位置选出最小值,加上原数组值,最后tem[-1][-1]就是结果值。
具体思路参考LeetCode 62:https://blog.youkuaiyun.com/sinat_28928833/article/details/89509410
代码:
class Solution:
def minPathSum(self, grid: List[List[int]]) -> int:
if len(grid) == 0 or len(grid[0]) == 0:
return 0
row = len(grid)
col = len(grid[0])
tem = [[0 for i in range(col)] for j in range(row)]
tem[0][0] = grid[0][0]
for i in range(1, row):
tem[i][0] = grid[i][0] + tem[i-1][0]
for j in range(1, col):
tem[0][j] = grid[0][j] + tem[0][j-1]
for i in range(1, row):
for j in range(1, col):
tem[i][j] = min(tem[i-1][j], tem[i][j-1]) + grid[i][j]
#print(i,' ',j,' ',tem)
return tem[-1][-1]