LeetCode:Minimum Path Sum


Minimum Path Sum
Editorial Solution
Total Accepted: 70466 
Total Submissions: 201784 
Difficulty: Medium
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.
Subscribe to see which companies asked this question
Hide Tags
 
Array Dynamic Programming
Hide Similar Problems
 
(M) Unique Paths (H) Dungeon Game
c++ code:
class Solution {
public:
    int minPathSum(vector<vector<int>>& grid) {
        
        int m = grid.size();
        int n = grid[0].size();
        if(m>1)
            for(int i=1;i<m;i++) grid[i][0] += grid[i-1][0];
        if(n>1)
            for(int j=1;j<n;j++) grid[0][j] += grid[0][j-1];
        if(1==m) return grid[0][n-1];
        if(1==n) return grid[m-1][0];
        
        for(int i=1;i<m;i++)
        for(int j=1;j<n;j++) {
            grid[i][j] += grid[i-1][j]<grid[i][j-1]?grid[i-1][j]:grid[i][j-1];
        }
        return grid[m-1][n-1];
    }
};