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

题目来源

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

题目详情

给定一个 m x n 整数矩阵 matrix ,找出其中 最长递增路径 的长度。

对于每个单元格,你可以往上,下,左,右四个方向移动。 你 不能对角线 方向上移动或移动到 边界外(即不允许环绕)。

示例 1:

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

输入: matrix = [[9,9,4],[6,6,8],[2,1,1]]
输出: 4
解释: 最长递增路径为 [1, 2, 6, 9]

示例 2:

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

输入: matrix = [[3,4,5],[3,2,6],[2,2,1]]
输出: 4
解释: 最长递增路径是 [3, 4, 5, 6]。注意不允许在对角线方向上移动。

示例 3:

输入: matrix = [[1]]
输出: 1

提示:

  • m == matrix.length
  • n == matrix[i].length
  • 1 <= m, n <="200</code"><!--=-->
  • 0 <= matrix[i][j] <="231" - 1< code><!--=-->

题解分析

解法一:深度优先搜索+记忆优化

本题很容易就想到是使用深度优先搜索方法求解可能的最长递增路径,需要遍历每一个方格作为起始结点进行搜索。

本题的一个亮点在于引入了记忆数组,通过记忆数组可以对递归过程进行剪枝,因为只要是记忆数组记录的节点,就说明这个节点出发的最长递增路径是已经确定的了,不需要再次递归求解。

class Solution {
    int[][] dir= new int[][]{{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
    public int longestIncreasingPath(int[][] matrix) {
        int n = matrix.length;
        int m = matrix[0].length;
        int ans = 0;
        int[][] longestPath = new int[n][m];
        for(int i=0; i=0 && di = 0 && dj < m && matrix[i][j] < matrix[di][dj]){
                longestPath[i][j] = Math.max(longestPath[i][j], dfs(matrix, di, dj, longestPath) + 1);
            }
        }
        return longestPath[i][j];
    }
}

Original: https://www.cnblogs.com/GarrettWale/p/16110029.html
Author: Garrett_Wale
Title: LeetCode-329. 矩阵中的最长递增路径

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/583186/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【Example】C++ 虚基类与虚继承 (菱形继承问题)

    C++ 是支持多继承的语言, 但是实际项目开发中非必要不要使用多继承以降低代码逻辑的复杂性,当然 C++ 多继承的特性带来一些问题即 菱形继承。 当一个类继承了两个来自同父类的子类…

    Linux 2023年6月13日
    073
  • Linux tcpdump抓包命令排查

    bash;gutter:true; tcpdump命令行参数介绍:</p> <p>-A 以ASCII格式打印出所有分组,并将链路层的头最小化。 -c 在收到…

    Linux 2023年6月13日
    083
  • __pycache__

    最近在使用python写一个串口模块的时候,偶然发现运行脚本之后,在工程文件夹下面出现了这样一个文件夹__pycache__,所以就特意到网上查了一下这个文件夹是怎么回事。 &am…

    Linux 2023年6月14日
    0108
  • Linux系统编程之命名管道与共享内存

    在上一篇博客中,我们已经熟悉并使用了匿名管道,这篇博客我们将讲述进程间通信另外两种常见方式——命名管道与共享内存。 1.命名管道 管道是使用文件的方式,进行进程之间的通信。因此对于…

    Linux 2023年6月8日
    085
  • python_距离测量

    之所以写这个,其实就是希望能对距离有一些概念,当然这个也是很基础的,不过千里之行始于足下嘛,各种路径算法,比如a*什么的都会用到这个 距离测量有三种方式 1、欧式距离,这个是最常用…

    Linux 2023年6月6日
    087
  • zabbix用法

    zabbix用法 zabbix web管理界面功能介绍 默认页面是个仪表盘,右上角的编辑可以自定义布局 Monitoring(监控) Dashboard(仪表盘) 和主页面一样,可…

    Linux 2023年6月13日
    076
  • 防火墙NAT+DHCP+ACL+ACAP

    任务要求: SwitchA作为有线终端网关与DHCP Server,为无线终端与有线终端分配IP地址,并配置ACL访问控制列表控制不同用户的访问权限,客户机只能跟DMZ区域服务器互…

    Linux 2023年6月7日
    074
  • 云笔记本:一个Laxcus应用软件

    给大家展示一个第三方开发的应用软件:云笔记本。 这个作品来自一位Laxcus分布式应用软件开发者,目前已经通过Laxcus集群操作系统的兼容性测试。云笔记本的界面和功能,类似Win…

    Linux 2023年6月6日
    0125
  • nginx.service的作业失败,因为控制进程已退出,错误代码为。 有关详细信息,请参阅“systemctl状态nginx.service”和“journalctl-xeu nginx.service”。

    解决办法: 1.nginx -t 应测试所有文件并返回错误和警告位置 nginx: [emerg] unexpected end of file, expecting &#8220…

    Linux 2023年6月13日
    073
  • 三少玩Linux之Debian10.3(buster), win7共存的安装方法

    这个是debian10.3的安装视频:https://www.bilibili.com/video/BV1iE411x7ww, win7就不用教了吧; 先装win7, 再装debi…

    Linux 2023年6月14日
    090
  • Linux系统查看磁盘可用空间的5个命令

    大家好,我是良许。 工作中,经常会遇到磁盘爆满的情况,尤其是一台服务器运行了 N 年之后,里面会充满各种各样垃圾文件,比如:编译产生的中间文件、打包的镜像文件、日志文件,等等。 别…

    Linux 2023年5月27日
    0114
  • nginx禁止直接ip、未配置域名访问配置

    问题背景 最近偶然对线上域名配置的nginx IP进行直接访问后,发现http居然是可以通的,而https直接IP访问浏览器会报证书不安全的提示,点击详细查看发现是固定返回了ngi…

    Linux 2023年6月6日
    0201
  • 4个实验,彻底搞懂TCP连接的断开

    前言 看到这个标题你可能会说,TCP 连接的建立与断开,这个我熟,不就是三次握手与四次挥手嘛。且慢,脑海中可以先尝试回答这几个问题: 四次挥手是谁发起的? 如果断电/断网了连接会断…

    Linux 2023年5月27日
    092
  • ssl证书的选型,你知道多少?

    介绍 目前互联网常用的HTTP协议是非常不安全的明文传输协议。而SSL协议及其继任者TLS协议,是一种实现网络通信加密的安全协议,可在客户端(浏览器)和服务器端(网站)之间建立一条…

    Linux 2023年6月6日
    076
  • Docker 环境 Nacos2 MySQL8

    本文介绍 docker 环境下安装并单机运行 Nacos2,使用 docker 环境下的 MySQL 8 存储数据。 1 拉取镜像 1.1 创建目录 在硬盘上创建 nacos 的有…

    Linux 2023年6月7日
    093
  • shell常用集锦

    404. 抱歉,您访问的资源不存在。 可能是URL不正确,或者对应的内容已经被删除,或者处于隐私状态。 [En] It may be that the URL is incorre…

    Linux 2023年5月27日
    0104
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球