1. class Solution:
    2. def minPathSum(self, grid: List[List[int]]) -> int:
    3. #f[i][j] = min(f[i][j-1], f[i-1][j]) + grid[i][j]
    4. if not grid:
    5. return None
    6. m = len(grid)
    7. n = len(grid[0])
    8. path = [0] * n
    9. path[0] = grid[0][0]
    10. for i in range(1, n):
    11. path[i] = path[i-1] + grid[0][i]
    12. for i in range(1, m):
    13. for j in range(n):
    14. if j == 0:
    15. path[j] = path[j] + grid[i][j]
    16. else:
    17. path[j] = min(path[j], path[j-1]) + grid[i][j]
    18. return path[-1]
    1. class Solution:
    2. def minPathSum(self, grid: List[List[int]]) -> int:
    3. #f[i][j] = min(f[i][j-1], f[i-1][j]) + grid[i][j]
    4. if not grid:
    5. return None
    6. m = len(grid)
    7. n = len(grid[0])
    8. f = [[float("inf")] * (n + 1) for _ in range(m + 1)]
    9. f[0][1] = 0
    10. for i in range(1, m + 1):
    11. for j in range(1, n + 1):
    12. f[i][j] = min(f[i][j-1], f[i-1][j]) + grid[i-1][j-1]
    13. return f[-1][-1]