当前位置: 首页 > news >正文

329. 矩阵中的最长递增路径

题目链接:329. 矩阵中的最长递增路径 - 力扣(LeetCode)

将矩阵看成一个有向图,每个单元格对应图中的一个节点,如果相邻的两个单元格的值不相等,则在相邻的两个单元格之间存在一条从较小值指向较大值的有向边。问题转化成在有向图中寻找最长路径。

深度优先搜索是非常直观的方法。从一个单元格开始进行深度优先搜索,即可找到从该单元格开始的最长递增路径。对每个单元格分别进行深度优先搜索之后,即可得到矩阵中的最长递增路径的长度。

但是如果使用朴素深度优先搜索,时间复杂度是指数级,会超出时间限制,因此必须加以优化。

朴素深度优先搜索的时间复杂度过高的原因是进行了大量的重复计算,同一个单元格会被访问多次,每次访问都要重新计算。由于同一个单元格对应的最长递增路径的长度是固定不变的,因此可以使用记忆化的方法进行优化。用矩阵 memo 作为缓存矩阵,已经计算过的单元格的结果存储到缓存矩阵中。

使用记忆化深度优先搜索,当访问到一个单元格 (i,j) 时,如果 memo[i][j]

=0,说明该单元格的结果已经计算过,则直接从缓存中读取结果,如果 memo[i][j]=0,说明该单元格的结果尚未被计算过,则进行搜索,并将计算得到的结果存入缓存中。

遍历完矩阵中的所有单元格之后,即可得到矩阵中的最长递增路径的长度

class Solution {
public:static constexpr int dirs[4][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};int rows, columns;int longestIncreasingPath(vector< vector<int> > &matrix) {if (matrix.size() == 0 || matrix[0].size() == 0) {return 0;}rows = matrix.size();columns = matrix[0].size();auto memo = vector< vector<int> > (rows, vector <int> (columns));int ans = 0;for (int i = 0; i < rows; ++i) {for (int j = 0; j < columns; ++j) {ans = max(ans, dfs(matrix, i, j, memo));}}return ans;}int dfs(vector< vector<int> > &matrix, int row, int column, vector< vector<int> > &memo) {if (memo[row][column] != 0) {return memo[row][column];}++memo[row][column];for (int i = 0; i < 4; ++i) {int newRow = row + dirs[i][0], newColumn = column + dirs[i][1];if (newRow >= 0 && newRow < rows && newColumn >= 0 && newColumn < columns && matrix[newRow][newColumn] > matrix[row][column]) {memo[row][column] = max(memo[row][column], dfs(matrix, newRow, newColumn, memo) + 1);}}return memo[row][column];}
};

 

http://www.jsqmd.com/news/410104/

相关文章:

  • 2026别错过!AI论文软件 千笔·专业学术智能体 VS WPS AI,研究生写作神器!
  • 好用还专业!9个降AI率工具测评对比,研究生必看
  • 2026年知名的新国标红木家具/缅甸花梨木红木家具实用供应商采购指南如何选 - 品牌宣传支持者
  • 全程用 Claude Code 搓了一个 macOS 原生应用:SkillDeck
  • 把 5G 搬上太空:Rel-19 如何剔除协议底层的“地球惯性”?
  • 一文讲透|AI论文平台 千笔写作工具 VS Checkjie,本科生写论文就选它!
  • 智能科学毕设最全方向思路
  • 2026年实测靠谱的芙蕊汇品牌商城/芙蕊汇APP下载更新厂家选择指南哪家好 - 品牌宣传支持者
  • 强烈安利! AI论文工具 千笔写作工具 VS 灵感风暴AI,本科生必备!
  • 简单理解:ARM 核心寄存器(SP、LR、PC、xPSR)
  • 2026年评价高的台下盆厨房水槽/洗菜盆厨房水槽厂家推荐与选择指南 - 品牌宣传支持者
  • 智能科学毕设创新的题目汇总
  • 【含文档+PPT+源码】基于Spring Boot的电脑网上商城
  • 北京狗狗训练基地哪家好?北京专业正规的狗狗训练基地名单 - 品牌2025
  • 10 个全新大模型方向毕业设计题目
  • python-flask乡村居民收入数据的可视化平台Pycharm vue django
  • 2026年评价高的反弹器/衣柜反弹器厂家选购参考建议 - 品牌宣传支持者
  • Ray:面向AI时代的下一代分布式计算框架
  • 2026年知名的锦纶面料/复合面料新厂实力推荐(更新) - 品牌宣传支持者
  • python-flask协同过滤算法的音乐推荐研究Pycharm vue django
  • 2026年优质正品的芙蕊汇美妆商城/芙蕊汇化妆品商城热门品牌推荐口碑排行 - 品牌宣传支持者
  • 用过才敢说 10个降AI率平台测评:继续教育必备工具全解析
  • 2026 程序员生存指南:纯开发降温,AI 工程化溢价 50%
  • 2026年靠谱的溯源燕窝礼盒/孕妇专用溯源燕窝热门品牌推荐口碑排行 - 品牌宣传支持者
  • 2026年口碑好的农业用褐藻寡糖,南非巨藻酶解液褐藻寡糖,高活性褐藻寡糖厂家选购决策指南 - 品牌鉴赏师
  • CDN 转发下的隐匿攻击:利用 Domain Fronting 与 Cloudflare Workers
  • 剑指offer-77、打印从1到最⼤的n位数
  • 基于 AI 的动态 Payload 生成:实时对抗 WAF 的自学习模型
  • 2026年靠谱的智能仓储/智能仓储系统哪家专业制造厂家实力参考 - 品牌宣传支持者
  • 2026年云南优秀的中医护理,中医正骨,中医理疗馆行业口碑推荐 - 品牌鉴赏师