leetcode64. Minimum Path Sum
2024-10-19 04:23:39
这个题是从左上角到右下角的路径和最小,实际就是一道dp题。
第一种写法是只初始化(0,0)位置,第二种写法则是把第一行、第一列都初始化了。个人更喜欢第二种写法,简单一点。
dp的右下角的值就为最终的值
第一种写法:
class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int rows = grid.size();
if(rows <= )
return -;
int cols = grid[].size();
if(cols <= )
return -;
vector<vector<int> > result(rows,vector<int>(cols));
result[][] = grid[][];
for(int i = ;i < rows;i++){
for(int j = ;j < cols;j++){
if(i != && j != )
result[i][j] = grid[i][j] + min(result[i-][j],result[i][j-]);
if(i == && j != )
result[i][j] = result[i][j-] + grid[i][j];
if(j == && i != )
result[i][j] = result[i-][j] + grid[i][j];
}
}
return result[rows-][cols-];
}
};
第二种写法:
class Solution {
public:
int minPathSum(vector<vector<int>>& grid) {
int m = grid.size();
if(m <= )
return ;
int n = grid[].size();
if(n <= )
return ;
vector<vector<int> > dp(m,vector<int>(n));
dp[][] = grid[][];
for(int i = ;i < m;i++)
dp[i][] = dp[i-][] + grid[i][];
for(int i = ;i < n;i++)
dp[][i] = dp[][i-] + grid[][i];
for(int i = ;i < m;i++){
for(int j = ;j < n;j++){
dp[i][j] = grid[i][j] + min(dp[i-][j],dp[i][j-]);
}
}
return dp[m-][n-];
}
};
最新文章
- Aspose.Words基本操作
- 数位DP 求K进制下0~N的每个数每位上出现的数的总和
- Hadoop3.0新特性介绍,比Spark快10倍的Hadoop3.0新特性
- php缓存数组到文件
- P1912: [Apio2010]patrol 巡逻
- 搭建完整邮件系统(postfix+dovecot+clamAV+Spamassassin+amavisd-new)
- Android单元测试: 首先,从是什么开始
- MySQL学习笔记(一)&mdash;数据库基础
- ThinkPHP框架的增删改
- Max Consecutive Ones
- 切换Allegro PCB Editor
- idea的mybatis的mysql语句的小数转换百分号
- php5.5.7添加pgsql,pdo_pgsql,swoole
- 【tmos】spring boot项目中处理Schedule定时任务
- C#实现复杂XML的序列化与反序列化
- ppoint的使用
- sql server数据库自动备份
- 对怎样充分利用安卓官方开发网站的一个简单性介绍介绍-https://developer.android.google.cn/docs/
- pandas 筛选指定行或者列的数据
- sublime text2 配置
热门文章
- 中南月赛 B题 Scoop water
- SQL Server Metadata
- input button 与 submit 的区别
- Modern Operating System
- Windows server 2008 Tips
- Windows 10 Framework 3.5 _x64 离线安装包 最新安装版
- 对View的onMeasure()方法的进一步研究
- Unity3D-NGUI动态加载图片
- Non-resolvable parent POM for com.*******
- linux用户的增加与删除