矩阵中的最长递增路径

题目链接

矩阵中的最长递增路径

题目描述


注意点

  • 不能 在 对角线 方向上移动或移动到 边界外(即不允许环绕)

解答思路

  • 因为最长递增路径一定是连续的,所以想到使用深度优先遍历来做。如果只使用深度优先遍历会导致超时(同一个节点的最长递增路径可能会计算多次),所以考虑引入动态规划存储每个节点的最长递增路径。除此之外,还要进行剪枝,主要是解决边界问题和移动后的值小于当前值的情况

代码

class Solution {
    int row;
    int col;
    int[][] directions;
    public int longestIncreasingPath(int[][] matrix) {
        int res = 0;
        row = matrix.length;
        col = matrix[0].length;
        directions = new int[][] {{-1, 0}, {1, 0}, {0, -1}, {0, 1}};
        int[][] dp = new int[row][col];
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                res = Math.max(res, findMaxPath(matrix, dp, i, j));
            }
        }
        return res;
    }

    public int findMaxPath(int[][] matrix, int[][] dp, int i, int j) {
        if (dp[i][j] != 0) {
            return dp[i][j];
        }
        int maxPath = 0;
        for (int[] direction : directions) {
            int x = i + direction[0];
            int y = j + direction[1];
            if (x < 0 || x >= row || y < 0 || y >= col) {
                continue;
            }
            if (matrix[x][y] <= matrix[i][j]) {
                continue;
            }
            maxPath = Math.max(maxPath, findMaxPath(matrix, dp, x, y));
        }
        dp[i][j] = maxPath + 1;
        return dp[i][j];
    }
}

关键点

  • 深度优先遍历的思想
  • 动态规划的思想
  • 注意边界问题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/307821.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IP风险画像:源头防范网络攻击的全面策略

在当今数字化的时代&#xff0c;网络攻击呈现多样化和复杂化的趋势&#xff0c;为了确保网络的安全&#xff0c;制定全面的IP风险画像并从源头防范网络攻击是至关重要的。ip数据云将探讨如何通过建立IP风险画像来识别和应对潜在的威胁&#xff0c;从而实现更加安全可靠的网络环…

基于Hologres+Flink的曹操出行实时数仓建设作者:林震|曹操出行实时计算负责人

作者&#xff1a;林震&#xff5c;曹操出行实时计算负责人 曹操出行业务背景介绍 曹操出行创立于2015年5月21日&#xff0c;是吉利控股集团布局“新能源汽车共享生态”的战略性投资业务&#xff0c;以“科技重塑绿色共享出行”为使命&#xff0c;将全球领先的互联网、车联网、…

docker镜像的生成过程

镜像的生成过程 Docker镜像的构建过程&#xff0c;大量应用了镜像间的父子关系。即下层镜像是作为上层镜像的父镜像出现的&#xff0c;下层镜像是作为上层镜像的输入出现。上层镜像是在下层镜像的基础之上变化而来。 FROM centos:7 FROM指令是Dockerfile中唯一不可缺少的命令&a…

2023年12月青少年机器人技术等级考试(四级)理论综合试卷

2023年12月青少年机器人技术等级考试&#xff08;四级&#xff09;理论综合试卷 题目总数&#xff1a;30 总分数&#xff1a;100 单选题 第 1 题 单选题 Arduino UNO/Nano主控板&#xff0c;当数字引脚输出信号为高电平时&#xff0c;对应的电压是 &#xff1f;&…

Replace()函数实例讲解——vba

Replace函数 描述 返回一个字符串&#xff0c;该字符串中指定的子字符串已被替换成另一子字符串&#xff0c;并且替换发生的次数也是指定的。 语法 Replace(expression, find, replace[, start[, count[, compare]]]) Replace函数语法有如下命名参数&#xff1a; …

nginx+keepalived双主模式双主热备

目录 一、双主模式原理 1. nginxkeepalived主备模式缺点 2. 主备模式和双主模式的区别 二、配置文件 1. nginx01的keepalived.conf 2. nginx02的keepalived.conf 3. 检测nginx存活脚本文件nginx_check.sh 三、测试准备 1. 启动nginx01、nginx02 2. 启动keepalived 3. 查看网卡信…

Linux——firewalld防火墙(一)

一、Linux防火墙基础 Linux 的防火墙体系主要工作在网络层.针对TCP/P数据包实时过滤和限制.属于典型的包过滤防火墙&#xff08;或称为网络层防火墙)。Linux系统的防火墙体系基于内核编码实现&#xff0e;具有非常稳定的性能和高效率,也因此获得广泛的应用.在CentOS 7系统中几种…

D42D43D44|买卖股票的最佳时机

121.买卖股票的最佳时机 初始思路&#xff1a; 暴力解法&#xff0c;两个for循环。 class Solution {public int maxProfit(int[] prices) {int res Integer.MIN_VALUE;for(int i 0;i<prices.length;i){for(int j i1;j<prices.length;j){res Math.max(res,prices[…

Python画国旗

前言 今天&#xff0c;我们来用turtle库来绘制国旗 一、美国国旗 国旗的形状是长方形;国旗的长宽之比为19:10&#xff0c;美国国旗由红、白、蓝三色组成;画面格局由两部分组成&#xff0c;旗的左上方蓝底上排列着50颗白色的星&#xff0c;6颗一排与5颗一排相间排列&#xff…

Python 与 PySpark数据分析实战指南:解锁数据洞见

&#x1f482; 个人网站:【 海拥】【神级代码资源网站】【办公神器】&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交流的小伙伴&#xff0c;请点击【全栈技术交流群】 数据分析是当今信息时代中至关重要的技能之一。…

C++:多态究竟是什么?为何能成为面向对象的重要手段之一?

C&#xff1a;多态究竟是什么&#xff1f;为何能成为面向对象的重要手段之一&#xff1f; 前言一、多态的概念二、多态的定义及实现2.1 多态的构成条件2. 2 虚函数2.3 虚函数的重写2.3.1 虚函数重写的例外1&#xff1a;协变(基类与派生类虚函数返回值类型不同)2.3.2 虚函数重写…

在Linux中使用HTTP客户端库进行网络编程

在Linux环境中进行网络编程时&#xff0c;使用HTTP客户端库可以大大简化开发过程。这些库提供了丰富的功能和工具&#xff0c;使开发者能够轻松地发送和接收HTTP请求。以下是使用HTTP客户端库进行网络编程的一些关键步骤和要点。 选择合适的HTTP客户端库 在Linux上有多个流行…

深度学习 Day26——J5DenseNet+SE-Net实战

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 | 接辅导、项目定制&#x1f680; 文章来源&#xff1a;K同学的学习圈子 文章目录 前言1 我的环境2 pytorch实现DenseNet算法2.1 前期准备2.1.1 引入库2.1.2 设…

番茄助手Visual Assist X安装VS2022

番茄助手Visual Assist X安装VS2022 电脑配置安装步骤0.写在前面1.确保旧版番茄助手插件完全卸载。2.安装VA_X_Setup2440_0.exe&#xff0c;Win10以上系统需要【右键-属性】兼容Win7运行3.使用Everything&#xff08;或其它工具&#xff09;找到C盘对应的“VA_X64.dll”路径&am…

Xmind - win10安装破解Xmind2023

Xmind - win10安装破解Xmind2023 1、下载 Xmind下载 提取码:we6i 2、安装 Step 1:双击运行 exe文件 Step 2:忽略最新版本 最近更新选择继续升级至Pro选择取消Step 4:直接选择同意授权

机器学习 -- 余弦相似度

场景 我有一个 页面如下&#xff08;随便找的&#xff09;&#xff1a; 我的需求是拿到所有回答的链接&#xff0c; 再或者我在找房子网上&#xff0c;爬到所有的房产信息&#xff0c;我们并不想做过多的处理&#xff0c;我只要告诉程序&#xff0c;请帮我爬一个类似 xxx 相似…

千寻位置北斗高精度定位方案获40多家车企品牌订单

千寻位置北斗高精度定位方案获40多家车企品牌订单&#xff0c;在30多款车型上批量交付 千寻位置北斗高精度定位方案在30多款车型上批量交付&#xff0c;包括长城汽车、上汽、一汽红旗、吉利、广汽埃安、小鹏、理想、高合、智己、零跑等汽车厂商的多个智能汽车车型。 进入高速公…

棱镜七彩入选中国数字安全能力图谱(精选版)“SCA”领域

近日&#xff0c;数世咨询正式发布2023年度中国数字安全能力图谱&#xff08;精选版&#xff09;&#xff0c;棱镜七彩凭借在软件供应链安全领域领先的研发实力与创新能力&#xff0c;入选本次图谱应用场景板块SCA领域。 中国数字安全能力图谱”旨在反映中国数字安全产业市场规…

抖店关了一段时间,重新做还能做起来吗?相关抖店运营问题解答!

我是王路飞。 之前有很多新手脑子一热&#xff0c;跟风开通了抖店&#xff0c;保证金什么的也都交了。 后来发现自己做不起来&#xff0c;而且中间可能又忙着别的项目了&#xff0c;就把店铺给关闭了一段时间&#xff0c; 现在店铺又重开了&#xff0c;所以私信我&#xff0…

vue实现-年、月、日、时、分、秒、星期?

一、文章引导 #mermaid-svg-nP4oT3Y4d6oaxUsg {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-nP4oT3Y4d6oaxUsg .error-icon{fill:#552222;}#mermaid-svg-nP4oT3Y4d6oaxUsg .error-text{fill:#552222;stroke:#55222…