m == grid.length
n == grid[i].length
1 <= m, n <= 200
0 <= grid[i][j] <= 100
分析
可以通过将其状态分析为:
F(M,N)=min(F(M-1,N),F(M,N-1))+NUM(M,N)
现在的系统有一些小问题
coding
class Solution:
def minPathSum(self, grid: list[list[int]]) -> int:
if not grid or not grid[0]:
return 0
m = len(grid)
n = len(grid[0])
nums = [[0] * n for i in range(m)]
nums[0][0] = grid[0][0]
# 因为这里的有一些小问题
for i in range(1, n):
nums[0][i] = nums[0][i - 1] + grid[0][i]
# 数据同步
for i in range(1, m):
nums[i][0] = nums[i - 1][0] + grid[i][0]
# 状态转移方程式
for i in range(1, m):
for j in range(1, n):
nums[i][j] = min(nums[i - 1][j], nums[i][j - 1]) + grid[i][j]
return nums[-1][-1]