leetcode-64-最小路径和
题目描述:
给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。
说明:每次只能向下或者向右移动一步。
示例:
输入:
[
[1,3,1],
[1,5,1],
[4,2,1]
]
输出: 7
解释: 因为路径 1→3→1→1→1 的总和最小。
要完成的函数:
int minPathSum(vector<vector<int>>& grid)
说明:
1、给定一个二维数组grid,表示一个网格中所有点的代价,要找到一条从网格左上角到右下角的路径,只能向下走,或者向右走,使得这条路径上的代价的和最小。
最后返回这个最小的代价和。
2、这道题如果使用暴力穷举法,除了最后一行的元素和最后一列的元素都只有一种选择外(右下角元素没有选择),其余元素都有两种选择。
比如第一行第一列的元素1,可以选择往右走或者往下走,两种选择。
当网格变大之后,穷举法太耗时了。因此我们采用其他方法。
学习过算法设计的同学一看这道题应该就能想到动态规划的方法。
我们用动态规划的方法记录到达每一个点的最小路径代价。
左上角的元素的最小路径代价肯定就是自身。
其余元素的最小路径代价,要不就是左边元素的最小路径代价+自身代价,要不就是上方元素的最小路径代价+自身代价,最后两者之中取一个小的,作为自身这个元素的最小路径代价。
不断地迭代下去,最后右下角的元素的最小路径代价就是我们所求的。
代码如下:(附详解)
int minPathSum(vector<vector<int>>& grid)
{
if(grid.empty())return 0;//如果矩阵是空的,那么返回0
int hang=grid.size(),lie=grid[0].size();
vector<vector<int>>record(hang,vector<int>(lie,0));//初始化一个矩阵用来记录每一个点的最小路径代价
for(int i=0;i<hang;i++)
{
for(int j=0;j<lie;j++)
{
if(i==0&j==0)//如果是左上角的元素,代价等于自身
record[i][j]=grid[i][j];
else
{
if(i==0)//如果是第0行的元素,代价只能从左边元素“继承”过来
record[i][j]=record[i][j-1]+grid[i][j];
else if(j==0)//如果是第0列的元素,代价只能从上方元素“继承”过来
record[i][j]=record[i-1][j]+grid[i][j];
else//如果是中间部分的元素,就取两者之中小的那一个
record[i][j]=min(record[i][j-1]+grid[i][j],record[i-1][j]+grid[i][j]);
}
}
}
return record[hang-1][lie-1];
}
上述代码实测8ms,beats 96.95% of cpp submissions。
leetcode-64-最小路径和的更多相关文章
- leetcode 64. 最小路径和 动态规划系列
目录 1. leetcode 64. 最小路径和 1.1. 暴力 1.2. 二维动态规划 2. 完整代码及执行结果 2.1. 执行结果 1. leetcode 64. 最小路径和 给定一个包含非负整数 ...
- LeetCode 64. 最小路径和(Minimum Path Sum) 20
64. 最小路径和 64. Minimum Path Sum 题目描述 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明: 每次只能向下或 ...
- Java实现 LeetCode 64 最小路径和
64. 最小路径和 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 示例: 输入: [ [1,3,1], ...
- [LeetCode] 64. 最小路径和 ☆☆☆(动态规划)
描述 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 示例: 输入:[ [1,3,1], [1,5,1 ...
- LeetCode 64最小路径和
题目 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 示例: 输入: [ [1,3,1], [1,5 ...
- [LeetCode]64. 最小路径和(DP)
题目 给定一个无序的整数数组,找到其中最长上升子序列的长度. 示例: 输入: [10,9,2,5,3,7,101,18] 输出: 4 解释: 最长的上升子序列是 [2,3,7,101],它的长度是 4 ...
- Leetcode——64. 最小路径和
题目描述:题目链接 同样对于这个问题,我们可以考虑用动态规划来解决. 解决动态规划常见的三个步骤: 1:问题的归纳.对于 i,j 位置上的最短路径可以用d[ i ][ j ]表示. 2:归纳递推式:d ...
- leetcode 64. 最小路径和Minimum Path Sum
很典型的动态规划题目 C++解法一:空间复杂度n2 class Solution { public: int minPathSum(vector<vector<int>>&am ...
- Leetcode之动态规划(DP)专题-64. 最小路径和(Minimum Path Sum)
Leetcode之动态规划(DP)专题-64. 最小路径和(Minimum Path Sum) 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. ...
- Leetcode题目64.最小路径和(动态规划-中等)
题目描述: 给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 示例: 输入: [ [1,3,1], [1, ...
随机推荐
- with as 创建临时表,解决union all多个时出现内存出错的问题
with t(content_id, emp_id) as (VALUES('002', 416),('003', 416))SELECT * FROM t;
- xampp环境 安装 用法 composer
准备工作 1.打开PHP配置文件E:\xampp\php\php.ini确认以下模块已开启(移除前面的分号). extension=php_openssl.dll, extension=php_cur ...
- ESRI.ArcGIS.AnalysisTools.Erase 结果是空?
用ESRI.ArcGIS.AnalysisTools.Erase擦除,结果总是空的. 这几天一直纠结一个问题,就是在AE下使用ESRI.ArcGIS.AnalysisTools中的工具(例如:泰森多边 ...
- Git 同步远程仓库
在你经常使用的命令当中有一个git branch –a 用来查看所有的分支,包括本地和远程的.但是时间长了你会发现有些分支在远程其实早就被删除了,但是在你本地依然可以看见这些被删除的分支. 同步远程分 ...
- Sensor Fusion-based Exploration in Home Environments using Information, Driving and Localization Gains(基于传感器融合的使用信息、驾驶和定位增益在家庭环境中的探索)
Authors: Joong-Tae Park, Jae-Bok Song Department:Department of Mechanical Engineering, Korea Un ...
- struts2从浅至深(六)总结
在我认为strust2的作用就是 1.主要跟前端交互的框架数据提交先经过struts 2.起到对数据的过滤,接受数据 3.把数据显示到前段,具有很成熟的ognl技术,用起来特别方便 4.还提供了跟前段 ...
- Codeforces 706C Hard problem 2016-09-28 19:47 90人阅读 评论(0) 收藏
C. Hard problem time limit per test 1 second memory limit per test 256 megabytes input standard inpu ...
- COM是如何实现STA的
Rather than using thread synchronization objects (mutexes, semaphores, and so forth) to control acce ...
- Ansible Ad-Hoc命令
-a:传入模块的参数,不同的模块要传入的参数不同 -B SECOND:当任务放到后台执行异步任务,设置程序运行的超时时间,传入的是一个数值,单位秒 -C:测试该任务能否正常运行,不对被管理主机做出任何 ...
- spring mvc中的一些注释:@PathVariable @RequestParam等
请求路径上有个id的变量值,可以通过@PathVariable来获取 @RequestMapping(value = "/page/{id}", method = Request ...