leetcode上关于Array的题目:
解题思路:
动态规划问题,令result[i][j]为从起点到达(i,j)的最短距离,当然result[0][0]=grid[0][0]
对于一个m*n的矩阵上任意位置(i,j)(0≦i≦m-1,0≦j≦n-1)
1. 若是i==0,即第一行,对于任意j>0,(即不包括(0,0))有result[i][j]=grid[i][j-1]+grid[i][j]
2. 若是j==0,即第一列,对于任意i>0,(即不包括(0,0))有result[i][j]=grid[i-1][j]+grid[i][j]
3. 剩下的情况,有result[i][j]=min(grid[i-1][j],grid[i][j-1])+grid[i][j]
实际操作上,result可以就是grid,再进行上述操作即可。
代码:
class Solution: def minPathSum(self, grid): """ :type grid: List[List[int]] :rtype: int """ m=len(grid) #行数 n=len(grid[0]) #列数 for i in range(0,m): #遍历 for j in range(0,n): if i==0 and j==0: #(0,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] #返回最终结果
结果: