class Solution { public: int minPathSum(vector<vector<int> > &grid) { int m = grid.size(); int n = grid[0].size(); vector<vector<int> > dp(m, vector<int>(n, -1)); dp[m - 1][n - 1] = grid[m - 1][n - 1]; return minPathSum(grid, dp, 0, 0); } int minPathSum(vector<vector<int> > &grid, vector<vector<int> >& dp, int x, int y) { int down = INT_MAX; if(x < grid.size() - 1) { if(dp[x + 1][y] != -1) { down = dp[x+1][y]; } else { down = minPathSum(grid, dp, x + 1, y); } } int right = INT_MAX; if(y < grid[0].size() - 1) { if(dp[x][y + 1] != -1) { right = dp[x][y + 1]; } else { right = minPathSum(grid, dp, x, y + 1); } } if(dp[x][y] == -1) { dp[x][y] = (right > down ? down : right) + grid[x][y]; } return dp[x][y]; } };
4/08/2014
Leetcode -- Minimum Path Sum
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment