版权声明:本文为博主原创文章,请尊重原创,转载请注明原文地址和作者信息! https://blog.csdn.net/zzc15806/article/details/82628239
class Solution:
# 递归法(TLE)
def search(self, grid, r, c):
if r == 0 and c == 0:
return grid[0][0]
elif r == 0:
return self.search(grid, r, c-1) + grid[r][c]
elif c == 0:
return self.search(grid, r-1, c) + grid[r][c]
else:
return min(self.search(grid, r-1, c) + grid[r][c], self.search(grid, r, c-1) + grid[r][c])
def minPathSum(self, grid):
"""
:type grid: List[List[int]]
:rtype: int
"""
r, c = len(grid)-1, len(grid[0])-1
return self.search(grid, r, c)
class Solution:
# 动态规划
def minPathSum(self, grid):
"""
:type grid: List[List[int]]
:rtype: int
"""
opt = [[0]*len(grid[0]) for _ in range(len(grid))]
for i in range(len(grid)):
for j in range(len(grid[0])):
if i == 0 and j == 0:
opt[i][j] = grid[i][j]
elif i == 0:
opt[i][j] = opt[i][j-1] + grid[i][j]
elif j == 0:
opt[i][j] = opt[i-1][j] + grid[i][j]
else:
opt[i][j] = min(opt[i-1][j] + grid[i][j], opt[i][j-1] + grid[i][j])
return opt[-1][-1]