Minimum Path Sum - LeetCode
题目:
Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right which minimizes the sum of all numbers along its path.
Note: You can only move either down or right at any point in time.
分析:
这一题和Unique Paths(点击打开链接)很像,基本思想一样,区别就是这次的每一步是有权重的,同样是动态规划,只要我们在选择方向的时候,选择权值加和最小的方向即可。
代码:
class Solution:
# @param grid, a list of lists of integers
# @return an integer
def minPathSum(self, grid):
if not grid:
return 0
m,n =len(grid),len(grid[0])
for j in xrange(0,n):
for i in xrange(0,m):
if i == 0 and j == 0:
continue
elif i == 0:
grid[i][j] += grid[i][j-1]
elif j == 0:
grid[i][j] += grid[i-1][j]
else:
grid[i][j] += min(grid[i-1][j],grid[i][j-1])
return grid[m-1][n-1]