###64. Minimum Path Sum
题目: https://leetcode.com/problems/minimum-path-sum/
难度:
Medium
非常明显的DP
状态转移方程
dp[i][j] = gird[i][j] + min(dp[i-1][j], dp[i][j-1])
然后注意一下边界的处理,一开始dp[0][0] = grid[0][0]
第一行和第一列,之后开始全用状态转移方程
class Solution(object):
def minPathSum(self, grid):
"""
:type grid: List[List[int]]
:rtype: int
"""
m = len(grid)
n = len(grid[0]) if m else 0
dp = [[0 for i in range(n)] for i in range(m)]
dp[0][0] = grid[0][0]
# first row
for i in range(1,n):
dp[0][i] = grid[0][i] + dp[0][i-1]
# first col
for i in range(1,m):
dp[i][0] = grid[i][0] + dp[i-1][0]
for i in range(1,m):
for j in range(1,n):
dp[i][j] = grid[i][j] + min(dp[i-1][j], dp[i][j-1])
return dp[m-1][n-1]