64. 最小路径和

发布时间 2023-04-27 21:13:38作者: 猥琐丑八怪

 分析:

问题不大的一道题,但是那个n开始我取的grid第一个元素的长度,所以后面grid长度和n不等的时候

运行导致下标越界,看来好久才看出来

建立状态,当到当前位置的最小值为f[i][j]

状态转移,只有两个方向,f[i][j]=min(f[i-1][j],f[i][j-1])+grid[i][j]

初值f[0][0]=grid[i][0]

答案为f[-1][-1]

再处理一下边界。i=0和j=0的时候,只有一个方向

代码:

 1 class Solution(object):
 2     def minPathSum(self, grid):
 3         """
 4         :type grid: List[List[int]]
 5         :rtype: int
 6         """
 7         n=len(grid[0])
 8         f=[[0 for i in range(n)] for i in range(len(grid))]
 9         f[0][0]=grid[0][0]
10         for i in range(len(grid)):
11             for j in range(n):
12                 if i==0 and j!=0:
13                     f[i][j]=f[i][j-1]+grid[i][j]
14                 elif j==0 and i!=0:
15                     f[i][j]=f[i-1][j]+grid[i][j]
16                 elif i==j==0:
17                     pass
18                 else:
19                     f[i][j]=min(f[i-1][j],f[i][j-1])+grid[i][j]
20         return f[-1][-1]