LeetCode 931. 下降路径最小和(DP)

文章目录

    • 1. 题目
    • 2. 动态规划解题

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. 动态规划解题

这题很简单,DP解题

  • 状态表初始化数值INT_MAX,状态表第一行就是数组本身
  • 从第二行开始,每个格子可以接受他头顶的3个(左中右)状态的最小的过来
  • 状态方程如下:
    dp[i][j]=A[i][j]+min(dp[i−1][j−1],dp[i−1][j],dp[i−1][j+1])dp[i][j] = A[i][j]+min(dp[i-1][j-1], \quad dp[i-1][j],\quad dp[i-1][j+1])dp[i][j]=A[i][j]+min(dp[i1][j1],dp[i1][j],dp[i1][j+1])
  • 为了方便处理边界,状态表左右各加1列
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;}
};

在这里插入图片描述

  • 状态可以压缩:观察到下一行状态只跟上一行状态有关,所以只需要2行数组空间即可
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());}
};

在这里插入图片描述

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

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

相关文章

到2021年,目前深度学习领域有哪些除了调模型以外的硬核研究工作和进展?

文 | 刘斯坦&#xff0c;电光幻影炼金术源 | 极市平台作为一个未入门的研究生小白&#xff0c;一方面为深度学习的实际效果和应用价值而感到兴奋&#xff0c;另一方面也会担忧自己的个人能力的发展。个人目前浅薄的看法是&#xff0c;调模型的强应用向的研究工作&#xff0c;由…

美团点评SQL优化工具SQLAdvisor开源

在数据库运维过程中&#xff0c;优化 SQL 是 DBA 团队的日常任务。例行 SQL 优化&#xff0c;不仅可以提升程序性能&#xff0c;还能够降低线上故障的概率。 目前常用的 SQL 优化方式包括但不限于&#xff1a;业务层优化、SQL逻辑优化、索引优化等。其中索引优化通常通过调整索…

使用flask调用接口去加载模型和数据集,避免每次运行都会重复加载数据集或模型,节约大量等待时间

配置python程序debug/run&#xff0c;避免每次运行都会重复加载数据集或模型&#xff0c;节约大量等待时间 使用轻量级的后端框架flask运行要加载的模型&#xff0c;作为后端&#xff0c;保持在后端运行 调用程序时直接使用url访问即可 需要用到的依赖包&#xff1a; pip inst…

LeetCode 295. 数据流的中位数(大小堆)

文章目录1. 题目2. 大小堆解题1. 题目 中位数是有序列表中间的数。如果列表长度是偶数&#xff0c;中位数则是中间两个数的平均值。 例如&#xff0c; [2,3,4] 的中位数是 3 [2,3] 的中位数是 (2 3) / 2 2.5设计一个支持以下两种操作的数据结构&#xff1a;void addNum(int…

论文浅尝 | 利用常识知识图谱进行多跳推理的语言生成方法

笔记整理 | 朱珈徵&#xff0c;天津大学硕士。链接&#xff1a;https://arxiv.org/pdf/2009.11692.pdf动机尽管生成式预训练语言模型在一系列文本生成任务上取得了成功&#xff0c;但在生成过程中需要对基础常识知识进行推理的情况下&#xff0c;它们仍然会受到影响。现有的方法…

成本砍砍砍!不用数据也能用 BERT 做对比学习?

文 | 小昌编 | 小戏大家好&#xff0c;我是小昌&#xff0c;今天和大家聊一聊如何从 BERT 中获取好的句子表征。大家都知道&#xff0c;BERT 的设计初衷是为了获得更好的单词表征。但是&#xff0c;利用 BERT 来表征句子的需求无论在学术界还是工业界都是非常紧迫的。因此&…

Mt-Falcon——Open-Falcon在美团点评的应用与实践

监控系统是整个业务系统中至关重要的一环&#xff0c;它就像眼睛一样&#xff0c;时刻监测机房、网络、服务器、应用等运行情况&#xff0c;并且在出现问题时能够及时做出相应处理。 美团点评刚开始使用的是Zabbix监控系统&#xff0c;几经优化&#xff0c;在当时能够达到2W机器…

paddlenlp 任务清单 中文分词、中文纠错、文本相似度、情感分析、词性标注等一键

PaddleNLP Taskflow https://github.com/PaddlePaddle/PaddleNLP/blob/develop/docs/model_zoo/taskflow.md#paddlenlp-taskflow PaddleNLP Taskflow PaddleNLP Taskflow 介绍 任务清单 用法 查看使用示例中文分词词性标注命名实体识别文本纠错句法分析情感分析文本相似度『解…

论文浅尝 | 以知识图谱为基础的开放域对话生成的目标规划

笔记整理 | 韩振峰&#xff0c;天津大学硕士。链接&#xff1a;https://ojs.aaai.org//index.php/AAAI/article/view/6474动机 之前有关开放域对话生成的神经模型没有有效的机制来管理聊天主题&#xff0c;并且往往会生成不连贯的对话。受到人与人对话策略的启发&#xff0c;本…

LeetCode 378. 有序矩阵中第K小的元素(二分查找)

文章目录1. 题目2. 解题2.1 暴力法2.2 二分查找1. 题目 给定一个 n x n 矩阵&#xff0c;其中每行和每列元素均按升序排序&#xff0c;找到矩阵中第k小的元素。 请注意&#xff0c;它是排序后的第k小元素&#xff0c;而不是第k个元素。 示例: matrix [[ 1, 5, 9],[10, 11,…

LeetCode 341. 扁平化嵌套列表迭代器(双栈)

文章目录1. 题目2. 双栈解题1. 题目 给定一个嵌套的整型列表。设计一个迭代器&#xff0c;使其能够遍历这个整型列表中的所有整数。 列表中的项或者为一个整数&#xff0c;或者是另一个列表。 示例 1: 输入: [[1,1],2,[1,1]] 输出: [1,1,2,1,1] 解释: 通过重复调用 next 直到…

外卖O2O的用户画像实践

美团外卖经过3年的飞速发展&#xff0c;品类已经从单一的外卖扩展到了美食、夜宵、鲜花、商超等多个品类。用户群体也从早期的学生为主扩展到学生、白领、社区以及商旅&#xff0c;甚至包括在KTV等娱乐场所消费的人群。随着供给和消费人群的多样化&#xff0c;如何在供给和用户…

simbert文本相似度,短文本语义匹配模型

simbert文本相似语义召回&#xff1b;保存及在线服务https://blog.csdn.net/weixin_42357472/article/details/116205077 SimBERT&#xff08;基于UniLM思想、融检索与生成于一体的BERT模型&#xff09;【主要应用场景&#xff1a;相似文本生成、相似文本检索】 https://blog.…

论文浅尝 | 利用开放域触发器知识改进事件检测

笔记整理 | 申时荣&#xff0c;东南大学博士来源&#xff1a;ACL 2020源码&#xff1a;https://github.com/shuaiwa16/ekd.git摘要事件检测&#xff08;ED&#xff09;是文本自动结构化处理的一项基本任务。由于训练数据的规模小&#xff0c;以前的方法在unseen/标记稀疏的触发…

Beyond 预训练语言模型,NLP还需要什么样的知识?

近年来&#xff0c;深度学习技术已广泛应用于NLP领域&#xff0c;但实际应用效果往往受限于缺乏大规模高质量监督样本。2018年底&#xff0c;预训练语言模型横空出世&#xff0c;极大缓解了这个问题&#xff0c;通过“超大规模无监督语料上的预训练语言模型相对少量的监督样本进…

日志级别动态调整——小工具解决大问题

随着外卖业务的快速发展&#xff0c;业务复杂度不断增加&#xff0c;线上系统环境有任何细小波动&#xff0c;对整个外卖业务都可能产生巨大的影响&#xff0c;甚至形成灾难性的雪崩效应&#xff0c;造成巨大的经济损失。每一次客诉、系统抖动等都是对技术人员的重大考验&#…

LeetCode 324. 摆动排序 II

文章目录1. 题目2. 解题1. 题目 给定一个无序的数组 nums&#xff0c;将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]… 的顺序。 示例 1: 输入: nums [1, 5, 1, 1, 6, 4] 输出: 一个可能的答案是 [1, 4, 1, 5, 1, 6] 示例 2: 输入: nums [1, 3, 2, 2, 3,…

最全的Pycharm debug技巧

最全的Pycharm debug技巧&#xff1a; 工欲善其事&#xff0c;必先利其器。无论你的 IDE 是 IntelliJ IDEA、Pycharm、WebStorm、GoLang、还是PhpStorm &#xff0c;调试器都是标配。在遇到有问题的程序时&#xff0c;合理的利用调试器的跟踪和断点技巧&#xff0c;可以很快的…

OpenKG祝大家端午安康

—????????OpenKG祝大家端午安康????????—

两个月,刷了八千篇Arxiv,我发现……

文 | 白鹡鸰编 | 小轶从五月初到现在&#xff0c;大约刷了八千篇Arxiv之后&#xff0c;我发现我有毛病。当然&#xff0c;这是读论文上头时的牢骚&#xff0c;不是真心话&#xff0c;只是说&#xff0c;我在Arxiv上投入的精力的努力&#xff0c;与我预计的收获不成正比。故事的…