LeetCode 931. 下降路径最小和(动态规划)

1. 题目

给定一个方形整数数组 A,我们想要得到通过 A 的下降路径的最小和

下降路径可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列

示例:
输入:[[1,2,3],[4,5,6],[7,8,9]]
输出:12
解释:
可能的下降路径有:
[1,4,7], [1,4,8], [1,5,7], [1,5,8], [1,5,9]
[2,4,7], [2,4,8], [2,5,7], [2,5,8], [2,5,9], [2,6,8], [2,6,9]
[3,5,7], [3,5,8], [3,5,9], [3,6,8], [3,6,9]
和最小的下降路径是 [1,4,7],所以答案是 12。提示:
1 <= A.length == A[0].length <= 100
-100 <= A[i][j] <= 100

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/minimum-falling-path-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 动态规划,每次取上一行的正上方、左上方、右上方的3个值的最小的
  • 加了左右两个边界,方便代码统一处理
class Solution {
public:int minFallingPathSum(vector<vector<int>>& A) {const int N = A.size();vector<vector<int>> dp(N,vector<int>(N+2,INT_MAX));int i, j, minSum = INT_MAX;for(i = 0; i < N; i++) dp[0][i+1] = A[0][i];//初始化第一行for(i = 1; i < N; ++i){for(j = 1; j < N+1; ++j){dp[i][j] = A[i][j-1]+min(min(dp[i-1][j-1],dp[i-1][j]),dp[i-1][j+1]);}}for(i = 1; i < N+1; ++i)minSum = min(minSum,dp[N-1][i]);return minSum;}
};

12 ms 10.2 MB


每个状态只与上一行有关,可以进行压缩,节省空间

class Solution {
public:int minFallingPathSum(vector<vector<int>>& A) {const int N = A.size();vector<int> dp(N+2,INT_MAX);vector<int> temp(N+2,INT_MAX);int i, j, minSum = INT_MAX;for(i = 0; i < N; i++) temp[i+1] = A[0][i];//初始化第一行for(i = 1; i < N; ++i){for(j = 1; j < N+1; ++j){   //注意加了两列后下标的错位dp[j] = A[i][j-1]+min(min(temp[j-1],temp[j]),temp[j+1]);}swap(dp,temp);}return *min_element(temp.begin(),temp.end());}
};

12 ms 9.7 MB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476061.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IL应用之——用IL分析接口的本质

IL反编译利器——Ildasm.exe和Reflector.exe:一&#xff1a;Ildasm.exe简介 这一微软VS自带工具&#xff0c;在上一篇博文《初识Ildasm.exe——IL反编译的实用工具》中已经做了详细介绍&#xff0c;这里不再鳌述&#xff1b;二&#xff1a;Reflector.exe简介 至此&#xff08;1…

自定义_如何自定义协议

前言何为自定义协议&#xff0c;其实是相对标准协议来说的&#xff0c;这里主要针对的是应用层协议&#xff1b;常见的标准的应用层协议如http、ftp、smtp等&#xff0c;如果我们在网络通信的过程中不去使用这些标准协议&#xff0c;那就需要自定义协议&#xff0c;比如我们常用…

vs 2008 Ide 设置

/Files/chenhs/CurrentSettings-2009-08-02.rar/Files/chenhs/vs2005_vs2008_scottgu_vssetings.rar 转载于:https://www.cnblogs.com/chenhs/archive/2010/02/05/1664095.html

(二十七)【2021 WWW】Learning Intents behind Interactions with Knowledge Graph for Recommendation

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OpZWgm7T-1634540652258)(C:\Users\小轩\AppData\Roaming\Typora\typora-user-images\image-20211018091530075.png)] 创新性 提出了新的GNN聚合方案提出了意图图&#xff0c;每个意图图是将每个inte…

LeetCode 949. 给定数字能组成的最大时间(暴力)

1. 题目 给定一个由 4 位数字组成的数组&#xff0c;返回可以设置的符合 24 小时制的最大时间。 最小的 24 小时制时间是 00:00&#xff0c;而最大的是 23:59。 从 00:00 &#xff08;午夜&#xff09;开始算起&#xff0c;过得越久&#xff0c;时间越大。 以长度为 5 的字符…

校验json格式_格式化展示,校验错误,编辑JSON,这几个JSON工具一定不能错过

今天给大家介绍几个常用JSON的工具&#xff0c;基本上能满足你工作中对JSON的所有需求google插件 JSONView安装好插件后&#xff0c;格式化接口返回的JSON&#xff0c;还能展开节点和关闭节点&#xff0c;超级方便格式化本地JSON&#xff0c;检验错误JSON Viewer网页版将杂乱的…

LeetCode 929. 独特的电子邮件地址

1. 题目 每封电子邮件都由一个本地名称和一个域名组成&#xff0c;以 符号分隔。 例如&#xff0c;在 aliceleetcode.com中&#xff0c; alice 是本地名称&#xff0c;而 leetcode.com 是域名。 除了小写字母&#xff0c;这些电子邮件还可能包含 ‘.’ 或 ‘’。 如果在电…

推荐系统常用评价指标和代码实现

评价指标 Recall 名称&#xff1a; 召回率&#xff08;真阳性率&#xff09; 意义&#xff1a;在推荐系统中&#xff0c;我们只关心正确推荐的有多少&#xff0c;也就是用户真实喜欢的&#xff0c;并不会关心推荐错的&#xff0c;所以我们用召回率&#xff0c;而不是准确率&a…

哥谈的是语言,不是寂寞

经常看到一些文章在谈论语言&#xff0c;例如“哪个语言更有前途”&#xff0c;“语言选择是否关键”。我是个语言粉丝&#xff0c;但是看到这些文章总有一些奇怪的感觉。因为在我看来&#xff0c;这些文章谈的东西都不是我眼中的语言——可能与国内技术环境有关&#xff0c;语…

python timeit用法_十大Python开发技巧

Python开发指南, 超级实用足以让您震撼> Photo by Christina Morillo from StockSnap时不时地&#xff0c;当我了解Python的新功能时&#xff0c;或者我发现其他一些人不知道该功能时&#xff0c;我会记下它。在过去的几周中&#xff0c;我最近了解或实现了一些有趣的功能-S…

python编程中的经验(一直更新)

文章目录1. python基础语法1.1 怎么让两个list或者其它可以迭代的放到一起1.2 random.choice(x, n, replaceTrue) numpy中从某个数据集中选择1.3 如何根据key返回字典的value1.4 The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all…

LeetCode 953. 验证外星语词典

1. 题目 某种外星语也使用英文小写字母&#xff0c;但可能顺序 order 不同。 字母表的顺序&#xff08;order&#xff09;是一些小写字母的排列。 给定一组用外星语书写的单词 words&#xff0c;以及其字母表的顺序 order&#xff0c;只有当给定的单词在这种外星语中按字典序…

Cairngorm初学者入门教程 第六节--Cairngorm中Command利用Delegate与Service连接

在上一节&#xff0c;我们利用FrontController 去映射 Event与Command 在这一节我们主要针对Command这部分动作做介紹。在RIA应用程序中&#xff0c;不可或缺的部份就是跟后台服务器连接进行数据传递。Command通过Delegate去做Services的部份(包含Remoting,WebServices,…等) C…

3d点击_3D打印服务加工在医疗器械行业的应用

3D打印技术如今已经很常见的出现在了我们日常的制造生产中。普通的3D打印机从最开始的几万块到如今的几千块&#xff0c;设备价格的降低也使得3D打印技术普及率的增加&#xff0c;而技术的普及也推动着技术的发展。3D打印开始应用到许多行业当中&#xff0c;下面悟空打印坊3D打…

LeetCode 1033. 移动石子直到连续

1. 题目 三枚石子放置在数轴上&#xff0c;位置分别为 a&#xff0c;b&#xff0c;c。 每一回合&#xff0c;我们假设这三枚石子当前分别位于位置 x, y, z 且 x < y < z。 从位置 x 或者是位置 z 拿起一枚石子&#xff0c;并将该石子移动到某一整数位置 k 处&#xff0…

所有算法库的使用(sklearn,scipy)

文章目录1. sklearn1.1 sklearn.preprocessing 之 fit 和 transform 以及 fit_transform1.2 算法之 fit 和 predict和predict_proba1.3 predict_proba1.4 各种评测指标1.4.1 R2R^2R21.4.2 准确度、精准率、召回率1.4.3 平均绝对误差(MAE)和均方误差(MSE)1.5 特征缩放 StandardS…

Perl文档操作选项

文件测试操作符 操作符 描述 -b 是否为块设备 -c 是否为字符设备 -d 是否为目录 -e 是否存在 -f 是否为普通文件 -g 是否设置了setgid位 -k 是否设置了sticky位 -l 是否为符号链接 -o 是否拥有该文件 -p 是否为管道 -r 是否可读 -s 是否非空 -t 是否表…

android aar保存图片文件异常_我去!合并AAR时踩坑了!

点击上方“刘望舒”&#xff0c;马上关注&#xff0c;早上8:42推送真爱&#xff0c;请置顶或星标作者: leeon7https://www.jianshu.com/p/8f7e32015836背景在输出Android模块时&#xff0c;有时会因为个别原因(比如来自业务的不可抗力)&#xff0c;要求将模块打包成一个文件提供…

LeetCode 1037. 有效的回旋镖

1. 题目 回旋镖定义为一组三个点&#xff0c;这些点各不相同且不在一条直线上。 给出平面上三个点组成的列表&#xff0c;判断这些点是否可以构成回旋镖。 示例 1&#xff1a; 输入&#xff1a;[[1,1],[2,3],[3,2]] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a…

与kylin_Kylin 迁移到 HBase 实践在小米的实践

背景小米Kylin生产环境部署的是基于社区2.5.2修改的内部版本&#xff0c;所依赖HBase集群是一个公共集群&#xff0c;小米内部很多离线计算服务共享使用该HBase集群。由于Kylin已经产生超过6000张HBase表&#xff0c;给HBase的metadata管理造成了不小的压力&#xff0c;HBase m…