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)

大家都在看

  • Redis:redis常用操作命令

    redis登录 #登录命令 -h 登录地址 -p 端口 ./redis-cli -h 127.0.0.1 -p 6379 查看缓存大小 #查看缓存大小 dbsize 查看所有Key…

    Linux 2023年5月28日
    0137
  • Linux 如何设置开机自启动脚本

    https://blog.csdn.net/weixin_40343504/article/details/82457990 Original: https://www.cnblo…

    Linux 2023年6月13日
    0106
  • python写一个双色球彩票计算器

    首先声明,赌博一定不是什么好事,也完全没有意义,不要指望用彩票发财。之所以写这个,其实是用来练手的,可以参考这个来预测一些其他的东西,意在抛砖引玉。 啰嗦完了,马上开始,先上伪代码…

    Linux 2023年6月6日
    0108
  • linux设备模型及实例

    1.linux设备模型基本概念 BUS(总线):用于关联设备和驱动,代表一个实际的物理总线(如USB、PCI bus)或虚拟总线(如platform bus),总线会提供与总线相关…

    Linux 2023年6月6日
    0106
  • Scrapy关键词 爬虫的简单实现(以新华网和人民网为例)

    新华网爬虫(2022年6月) 1 分析网站结构 新华网网址:新华网_让新闻离你更近 (news.cn) 新华网的首页是带有关键词搜索功能的,我们尝试在搜索栏随意搜索一个关键词 可以…

    Linux 2023年6月7日
    0118
  • 关于Google词向量模型(googlenews-vectors-negative300.bin)的导入问题

    起因 项目中有如下代码: word2vec = KeyedVectors.load_word2vec_format(‘./GoogleNews-vectors-negative30…

    Linux 2023年6月7日
    0104
  • 初学ajax

    ajax出现无疑改变了web应用:从开始的整体页面的刷新到局部页面的数据显示,不用刷新页面就可以与服务器交互; 1 function ajaxPost(data){ 2 3 var…

    Linux 2023年6月14日
    089
  • 统计Redis中各种数据的大小

    如果 MySQL 数据库比较大的话,很容易就能查出是哪些表占用的空间; 不过如果 Redis 内存比较大的话, […] Meet so Meet. C plusplus…

    Linux 2023年5月28日
    094
  • CentOS 文件管理

    一、目录管理 1.1、目录结构 1.2、切换目录 1.3、查看目录 1.4、创建目录 1.5、复制目录 1.6、剪切目录 1.7、删除目录 二、文件管理 2.1、查看文件 2.2、…

    Linux 2023年5月27日
    0170
  • cobbler

    cobbler cobbler cobbler简介 cobbler工作原理 cobbler的作用 cobbler服务端部署 cobbler简介 Cobbler是一个Linux服务器…

    Linux 2023年6月6日
    0102
  • CSS中content属性的妙用

    前言 本文讲解CSS中使用频率并不高的content属性,通过多个实用的案例,带你由浅入深的掌握content的用法,让代码变得更加简洁、高效。 定义 W3school中这样定义:…

    Linux 2023年6月7日
    0143
  • Ubuntu修改静态IP

    转载自:https://www.cnblogs.com/xwgcxk/p/10560181.html 第一步:先获取网卡名称,输入ifconfig,如下图,我们的网卡名称为 ens…

    Linux 2023年6月8日
    081
  • Windows Server OS 系列安装

    Windows Server OS 系列安装 Windows Server 2003 Windows Server 2008 Windows Server 2012 Windows…

    Linux 2023年6月13日
    094
  • Macbook pro 2015 安装Windows后再安装Linux

    我尝试了Debian,Ubuntu,Kali Linux都不能启动Windows。每次装完,磁盘格式都会自动变成MBR。结果今天尝试了安装Fedora 36,居然轻轻松松就成功了。…

    Linux 2023年6月6日
    0111
  • 写给初学者的Linux errno 错误码机制

    不同于Java的异常处理机制, 当你使用C更多的接触到是基于错误码的异常机制, 简单来说就是当调用的函数发生异常时, 程序不会跳转到一个统一处理异常的地方, 取而代之的是返回一个整…

    Linux 2023年5月27日
    089
  • Servlet版本冲突导致页面404

    先准备好了Tomcat环境以及用Idea打了一个Servlet war包想看看效果,结果发现页面跳转一直报404错误,检查了跳转url,项目结构等情况后,问题依旧没有解决。最后偶然…

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