您的位置:首页 > 其它

LeetCode之Minimum Path Sum

2015-07-24 11:33 671 查看
/*动态规划法。
用dp[i][j]表示从左上角到grid[i][j]表示的元素的最小距离。则有
dp[i][j] = min{dp[i][j-1]+grid[i][j], dp[i-1][j]+grid[i][j]}。
下面在实现过程中采用滚动数组的方法将空间复杂度降到o(n).*/
class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
if(grid.empty()) return 0;
vector<int> dp(grid[0].size(), 0);
dp[0] = grid[0][0];
for(int i = 1; i < grid[0].size(); ++i) dp[i] = dp[i-1]+grid[0][i];
for(int i = 1; i < grid.size(); ++i){
for(int j = 0; j < grid[i].size(); ++j){
if(j == 0) dp[j] = dp[j]+grid[i][j];
else dp[j] = min(dp[j-1]+grid[i][j], dp[j]+grid[i][j]);
}
}
return dp[grid[0].size()-1];
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: