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

【力扣】矩阵中的最长递增路径

一、题目描述

二、解题思路

1、先求出以矩阵中的每个单元格为起点的最长递增路径

题目中说,对于每个单元格,你可以往上,下,左,右四个方向移动那么以一个单元格为起点的最长递增路径就是:从该单元格往上,下,左,右四个方向走的四条递增路径中的最大值(即最长的一条递增路径)。

2、在求出的所有最长递增路径中找最大值

因为题目是求矩阵中的最长递增路径,所以要在求出的所有最长递增路径中找最大值。

3、使用“记忆化搜索”(递归+“备忘录” )来解决该题。

三、 代码

class Solution {int m, n;//遍历上、下、左、右四个方向所需的数组int[] dx = {0,0,1,-1};int[] dy = {1,-1,0,0};int[][] memo;  //备忘录public int longestIncreasingPath(int[][] matrix) {m = matrix.length;n = matrix[0].length;memo = new int[m][n];//求所有的最长递增路径中的最大值int ret = 0;for(int i = 0; i < m; i++) {for(int j = 0; j < n; j++) {ret = Math.max(ret,dfs(i, j, matrix));}}return ret;}//递归函数//求出以矩阵中的每个单元格为起点的最长递增路径(上下左右四个方向中的最大值)public int dfs(int i, int j, int[][] matrix) {if(memo[i][j] != 0) {return memo[i][j];}int ret = 1;for(int k = 0; k < 4; k++) {int x = i + dx[k];int y = j + dy[k];if(x >= 0 && x < m && y >= 0 && y < n && matrix[x][y] > matrix[i][j]) {ret = Math.max(ret, dfs(x,y,matrix)+1);}}memo[i][j] = ret;return ret;}
}

 

 

http://www.lryc.cn/news/366074.html

相关文章:

  • 语音深度鉴伪识别项目实战:基于深度学习的语音深度鉴伪识别算法模型(二)音频数据预处理及去噪算法+Python源码应用
  • 网络原理——http/https ---http(1)
  • Docker安装、使用,容器化部署springboot项目
  • USB主机模式——Android
  • 240520Scala笔记
  • 【React】封装一个好用方便的消息框(Hooks Bootstrap 实践)
  • tomcat10部署踩坑记录-公网IP和服务器系统IP搞混
  • 探索Sass:Web开发的强大工具
  • vue组件之间的通信方式有哪些
  • 111、二叉树的最小深度
  • SpringBoot3依赖管理,自动配置
  • 音视频开发17 FFmpeg 音频解码- 将 aac 解码成 pcm
  • vue2中封装图片上传获取方法类(针对后端返回的数据不是图片链接,只是图片编号)
  • 【C++面向对象编程】(二)this指针和静态成员
  • 最大矩形问题
  • LeetCode62不同路径
  • GNU Radio实现OFDM Radar
  • 东方博宜1760 - 整理抽屉
  • react快速开始(四)-之Vite 还是 (Create React App) CRA? 用Vite创建项目
  • 使用python绘制核密度估计图
  • 5. MySQL 运算符和函数
  • Linux学习之vi文本编辑器的使用
  • 【数据结构】链表与顺序表的比较
  • dart 基本语法
  • 【经验分享】嵌入式入坑经历(选段)
  • Docker面试整理-Docker与虚拟机的区别是什么?
  • Java:JDK8 GC中ParNew和CMS的问题说明
  • 学单片机前先学什么?
  • 数据可视化:Matplotlib 与 Seaborn
  • 【linux】自定义快捷命令/脚本