【一天一道LeetCode】#64. Minimum Path Sum.md
一天一道LeetCode本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github欢迎大家关注我的新浪微博,我的新浪微博欢迎转载,转载请注明出处(一)题目Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right wh
·
一天一道LeetCode
本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github
欢迎大家关注我的新浪微博,我的新浪微博
欢迎转载,转载请注明出处
(一)题目
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.
(二)解题
题目大意:求从m*n的矩阵的左上角走到右下角的所有路径中,路径上的值加起来最小的路径。
思路可以参考:【一天一道LeetCode】#62. Unique Paths &&【一天一道LeetCode】#63. Unique Paths II
class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int row = grid.size();
int col = grid[0].size();
vector<vector<int>> path = grid; //path纪录当前点到右下角点的路径和最小值
//对矩阵进行改造,可以避免考虑越界
vector<int> temp(col,2147483647);
path.push_back(temp);
for(int i = 0 ; i < row ; i++)
{
path[i].push_back(2147483647);
}
for(int i = row-1 ; i >=0 ; i--)
for(int j = col-1 ; j>=0;j--)
{
if (i==row-1&&j==col-1) continue;//终点直接跳过
if(path[i][j] ==grid[i][j])
{
path[i][j] +=min(path[i+1][j],path[i][j+1]);//每一点到终点的路径和最小值等一向下和向右走的最小值加上自身
}
}
return path[0][0];
}
};
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
已为社区贡献4条内容
所有评论(0)