python:
class Solution: def minPathSum(self, grid): """ :type grid: List[List[int]] :rtype: int """ for i in range(len(grid)): for j in range(len(grid[0])): if 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] elif i!=0 and j!=0: grid[i][j] += min(grid[i-1][j],grid[i][j-1]) return grid[-1][-1]
C++:
class Solution { public: int minPathSum(vector<vector<int>>& grid) { int row = grid.size(), col = grid[0].size(); vector<vector<int>> ans(row+1,vector<int>(col+1,INT_MAX)); ans[0][1] = 0; for(int i=1;i<=row;i++){ for(int j=1;j<=col;j++){ ans[i][j] = min(ans[i-1][j], ans[i][j-1]) + grid[i-1][j-1]; } } return ans[row][col]; } };