LeetCode-Python-64. 最小パスと
非負の整数を含むmxnメッシュを指定します.左上から右下に向かうパスを見つけて、パスの数値の合計が最小になります.
説明:毎回1歩下または右に移動するしかありません.
例:
考え方:
動的計画
dp[m][n] = min(dp[m - 1][n], dp[m][n - 1]) + grid[m][n].境界条件を考慮することに注意してください.
説明:毎回1歩下または右に移動するしかありません.
例:
:
[
[1,3,1],
[1,5,1],
[4,2,1]
]
: 7
: 1→3→1→1→1 。
考え方:
動的計画
dp[m][n] = min(dp[m - 1][n], dp[m][n - 1]) + grid[m][n].境界条件を考慮することに注意してください.
class Solution(object):
def minPathSum(self, grid):
"""
:type grid: List[List[int]]
:rtype: int
"""
#dp[m][n] = min(dp[m - 1][n], dp[m][n - 1]) + grid[m][n]
if not grid:
return 0
m = len(grid)
n = len(grid[0])
dp = [[0] * (n)] * (m)
for i in range(m):
for j in range(n):
# print dp, i, j
if not i and not j:
dp[i][j] = grid[i][j]
elif i and not j:
dp[i][j] = dp[i-1][j] + grid[i][j]
elif not i and j:
dp[i][j] = dp[i][j-1] + grid[i][j]
else:
dp[i][j] = min(dp[i-1][j], dp[i][j-1]) + grid[i][j]
return dp[m-1][n-1]