class Solution:
def minPathSum(self, grid: List[List[int]]) -> int:
for i in range(len(grid)):
for j in range(len(grid[0])):
if i == 0 and j == 0:
continue
elif i == 0 and j !=0:
grid[i][j] += grid[i][j - 1]
elif i != 0 and j == 0:
grid[i][j] += grid[i - 1][j]
else:
grid[i][j] += min(grid[i][j - 1], grid[i - 1][j])
return grid[-1][-1]
共以下 17 个回答
二维数组–>一维数组
DP,类比杨辉三角
时间复杂度:O(N)
空间复杂度:O(1)
时间复杂度 O(n)
时间O(mn)
时间空间复杂度为O(mn)
//动态规划>& grid) {
class Solution {
public:
int minPathSum(vector<vector
int m=grid.size(),n=grid[0].size();
for(int i=1;i<n;++i) grid[0][i]+=grid[0][i-1];
for(int i=1;i<m;++i) grid[i][0]+=grid[i-1][0];
for(int i=1;i<m;++i){
for(int j=1;j<n;++j){
grid[i][j]+=min(grid[i-1][j],grid[i][j-1]);
}
}
return grid[m-1][n-1];
};
时间空间O(mn)
时间:O(mn),空间:O(mn)