leetcode931_下降路径最小和

devtools/2025/2/5 8:07:55/

1. 题意

一个N x N的方形数组,从第一行任意列出发,每次向下一行,可以向左向右保护列不动,求到最后一行的最小路径和。

2. 题解

简单动态规划问题
d p [ i ] [ j ] = m [ i ] [ j ] + min ⁡ { d p [ i − 1 ] [ j − 1 ] d p [ i − 1 ] [ j ] d p [ i − 1 ] [ j + 1 ] \begin{equation*} dp[i][j] =m[i][j] +\min \begin{cases} dp[i-1][j-1] \\ dp[i-1][j] \\ dp[i-1][j+1] \end{cases} \end{equation*} dp[i][j]=m[i][j]+min dp[i1][j1]dp[i1][j]dp[i1][j+1]

class Solution {
public:int minFallingPathSum(vector<vector<int>>& matrix) {int n = matrix.size();vector<vector<int>> dp( n,vector<int>(n, 0));for (int i = 0;i < n;i++) {dp[0][i] = matrix[0][i];}int ans = 1000000;for (int i = 1;i < n;i++) {for (int j = 0;j < n;j++) {dp[i][j] = dp[i - 1][j];if (j + 1 < n)dp[i][j] = min(dp[i][j], dp[i-1][j+1]);if (j - 1 >= 0)dp[i][j] = min(dp[i][j], dp[i-1][j-1]);dp[i][j] += matrix[i][j];}}for (int i = 0;i < n;i++) {ans = min(dp[n-1][i], ans);}return ans;}
};

可以像01背包那样,将空间复杂度压缩到O(n)

  • 空间压缩
class Solution {
public:int minFallingPathSum(vector<vector<int>>& matrix) {int n = matrix.size();vector<int> dp(n, 0);for (int i = 0;i < n;i++) {dp[i] = matrix[0][i];}int ans = 1000000;for (int i = 1;i < n;i++) {int pre = dp[0];for (int j = 0;j < n;j++) {int tmp = dp[j];if (j > 0)dp[j] = min(pre,dp[j]);if (j + 1 < n)dp[j] = min(dp[j+1],dp[j]);dp[j] += matrix[i][j];pre = tmp;}}for (int i = 0;i < n;i++) {ans = min(dp[i], ans);}return ans;}
};

http://www.ppmy.cn/devtools/156215.html

相关文章

2.4学习内容

922. 按奇偶排序数组 IIhttps://leetcode.cn/problems/sort-array-by-parity-ii/ 922. 按奇偶排序数组 II 给定一个非负整数数组 nums&#xff0c; nums 中一半整数是 奇数 &#xff0c;一半整数是 偶数 。 对数组进行排序&#xff0c;以便当 nums[i] 为奇数时&#xff0c;…

Multi-Scale Heterogeneous Text-Attributed Graph Datasets From Diverse Domains

Multi-Scale Heterogeneous Text-Attributed Graph Datasets From Diverse Domains WWW25 推荐指数&#xff1a;#paper/⭐⭐⭐#​ 代码地址&#xff1a;https://github.com/Cloudy1225/HTAG 作者主页&#xff1a;Yunhui Lius Homepage 一句话总结&#xff1a;提出了涵盖多…

工作总结:压测篇

前言 压测是测试需要会的一项技能&#xff0c;作为开发&#xff0c;有点时候也要会一点压测。也是被逼着现学现卖的。 一、压测是什么&#xff0c;以及压测工具的选择 压测&#xff0c;即压力测试&#xff0c;是一种性能测试手段&#xff0c;通过模拟大量用户同时访问系统&am…

PostgreSQL 数据库模式基础操作

查看数据库或者使用pgAdmin或者QGIS查看PG数据库时&#xff0c;可以看到数据库名下面有一个Public&#xff0c;然后才是具体的表&#xff0c;搜索了一下&#xff0c;按照PG官网&#xff1a;https://www.postgresql.org/docs/current/ddl-schemas.html 的说明&#xff0c;这个Pu…

php反序列化

php反序列化 声明&#xff1a;本人只是在学习反序列化 因此这篇文章大量参考了https://blog.csdn.net/Hardworking666/article/details/122373938 这位的博客 感谢他的详细文章让我可以详细学习反序列化 大家想看更详细的可以直接参考他的文章!!! 什么是序列化和反序列化 序…

swagger使用指引

1.swagger介绍 在前后端分离开发中通常由后端程序员设计接口&#xff0c;完成后需要编写接口文档&#xff0c;最后将文档交给前端工程师&#xff0c;前端工程师参考文档进行开发。 可以通过一些工具快速生成接口文档 &#xff0c;本项目通过Swagger生成接口在线文档 。 什么…

数组排序算法

数组排序算法 用C语言实现的数组排序算法。 排序算法平均时间复杂度最坏时间复杂度最好时间复杂度空间复杂度是否稳定适用场景QuickO(n log n)O(n)O(n log n)O(log n)不稳定大规模数据&#xff0c;通用排序BubbleO(n)O(n)O(n)O(1)稳定小规模数据&#xff0c;教学用途InsertO(n)…

实际操作 检测缺陷刀片

号he 找到目标图像的缺陷位置&#xff0c;首先思路为对图像进行预处理&#xff0c;灰度-二值化-针对图像进行轮廓分析 //定义结构元素 Mat se getStructuringElement(MORPH_RECT, Size(3, 3), Point(-1, -1)); morphologyEx(thre, tc, MORPH_OPEN, se, Point(-1, -1), 1); …