矩阵中的最长递增路径

LeetCode 高级 - 矩阵中的最长递增路径 矩阵中的最长递增路径 给定一个整数矩阵,找出最长递增路径的长度。 对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。 示例 1: 输入: nums = [ [9,9,4], [6,6,8], [2,1,1] ] 输出: 4 解释: 最长递增路径为 [1, 2, 6, 9]。 示例 2: 输入: nums ... 阅读详情

给定一个整数矩阵,找出最长递增路径的长度。

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

示例 1:

输入: nums = 
[
  [9,9,4],
  [6,6,8],
  [2,1,1]
] 
输出: 4 
解释: 最长递增路径为 [1, 2, 6, 9]。```
示例 2:

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

解法

class Solution {
public:
    int longestIncreasingPath(vector<vector<int>>& matrix) {

        int res=0;//用来存放结果
        //用两个数组代表上下左右移动
        const int dx[4] = {1, 0, 0, -1};
        const int dy[4] = {0, 1, -1, 0};
        //dp[i][j]代表移动到matrix[i][j]的最长增长路径
        //第一步骤,先计算出度
        int row=matrix.size();
        if(row<=0) return 0;
        int col=matrix[0].size();
        if(col<=0||row<=0) return 0;
        vector<vector<int>> degree(row,vector<int>(col,0));
        //计算出度

        for(int i=0;i<row;i++)
        {
            for(int j=0;j<col;j++)
            {
                for(int k=0;k<4;k++)
                {
                    int newrow=i+dx[k];
                    int newcol=j+dy[k];
                    if(newrow>=0&&newrow<row&&newcol>=0&&newcol<col&&matrix[newrow][newcol]>matrix[i][j])
                    degree[i][j]++;
                }
            }
        }

        //用dps
queue<pair<int,int>> q;

        for(int i=0;i<row;i++)
        {
            for(int j=0;j<col;j++)
            {
                if(degree[i][j]==0)
                q.push(pair(i,j));
            }
        }

        while(!q.empty())
        {
            res++;
            int size=q.size();
            for(int l=0;l<size;l++)
            {
                auto cell=q.front(); q.pop();
                int i=cell.first;
                int j=cell.second;
                for(int k=0;k<4;k++)
                {
        
                 int newrow=i+dx[k];
                 int newcol=j+dy[k];
                 if(newrow>=0&&newrow<row&&newcol>=0&&newcol<col&&matrix[newrow][newcol]<matrix[i][j])
                 {
                     degree[newrow][newcol]--;
                     if(degree[newrow][newcol]==0)
                     q.push(pair(newrow,newcol));
                 }
                }
            }
                    
                
            
        }
        return res;
    }
};
【LeetCode】329. 矩阵中的最长递增路径 这是一个典型的DFS+记忆化搜索问题,通过记录每个位置的最长路径长度来避免重复计算。关键点是要考虑四个方向的移动,并确保路径严格递增。 阅读详情

相关推荐

【动态规划】【矩阵】C++算法329矩阵中的最长递增路径

给定一个 m x n 整数矩阵 matrix ,找出其中 最长递增路径 的长度。 对于每个单元格,你可以往上,下,左,右四个方向移动。 你 不能 在 对角线 方向上移动或移动到 边界外(即不允许环绕)。

闻缺陷则喜何志丹 2441

leetcode-329:矩阵中的最长递增路径

遍历每个点,然后朝四个方向dfs,由于只会朝着递增的方向dfs,因此不用关注再次遍历已经访问过的点,但是这种方式会超时。对于每个单元格,你可以往上,下,左,右四个方向移动。给定一个 m x n 整数矩阵 matrix ,找出其中 最长递增路径 的长度。解释:最长递增路径是 [3, 4, 5, 6]。解释:最长递增路径为 [1, 2, 6, 9]。,因为每个点最短递增路径就是1,就是仅包含自身。不为1了,说明已经更新了该点,直接使用就行了。拓扑排序的深度,就是最长的递增路径。更大的点,不可能访问。

菊头蝙蝠的博客 1832

哨兵1号(Sentinel-1)雷达SAR数据预处理全流程:从下载到精确配准

本文详细介绍了哨兵1号(Sentinel-1)雷达SAR数据从下载到精确配准的全流程预处理方法。内容涵盖SLC与GRD数据选择、ASF平台下载技巧,并重点解析了使用SNAP软件进行几何校正、辐射定标及高精度配准的核心步骤,为InSAR形变监测等应用提供可靠的数据基础。

weixin_29208327的博客 478

算法题:矩阵中的最长递增路径(题目+思路+代码+注释)(简单易懂的记忆法)

我们从下面这个图来分析,最长的递增路径,终点必定是图里面某个点,假设点4作为终点那么最长递增路径必定等于点3的最长路径+1,这样点5=点4+1,就把之前已经算过的利用起来了,减少了运算。因此我们从最小的数开始算,不断的往更大的数去算,就能依次得出每个数作为终点时最大的递增路径长度,我们找出哪个点作为终点的递增路径长度最长则可以找出最长的递增路径长度。输入:matrix = [[9,9,4],[6,6,8],[2,1,1]]输入:matrix = [[3,4,5],[3,2,6],[2,2,1]]

HumorChen的博客 3385

继电器的选型规范

触点是继电器中最重要的结构件,触点的使用寿命受触点材料、触点上的电压及电流值(特别是接通时及断开时的电压、电流波形)、负载种类、切换频率、环境情况、接触形式、触点回跳现象等的影响,触点失效多以触点的材料转移、粘连、异常消耗、接触电阻增大等故障现象出现,使用时需要注意。为了稳定工作, DC 型继电器的线圈两端所加电压推荐使用波纹变化率小于±5%的线圈额定电压,否则继电器会工作不稳定,引起触点的粘接或异常损耗,特别是在继电器的驱动电路上连接有电动机、螺线管、变压器等器件时,这种情况更为明显。

qq_43416206的博客 1881

Linux显卡管理避坑指南:为什么Xorg总是占用你的NVIDIA GPU?

本文深入解析了在Linux系统上,尤其是双显卡笔记本中,Xorg显示服务器进程占用NVIDIA GPU的根本原因。文章从Xorg的驱动加载机制和NVIDIA驱动的独占性入手,详细对比了禁用配置文件、手动配置xorg.conf、使用官方PRIME方案以及切换到Wayland等主流解决方案的优缺点与适用场景,旨在帮助用户有效释放GPU资源,确保深度学习、游戏等计算任务能独占显卡性能。

xgboost6farmer的博客 268

矩阵中的最长递增路径(困难)/dfs/动态规划

https://leetcode-cn.com/problems/longest-increasing-path-in-a-matrix/solution/ju-zhen-zhong-de-zui-chang-di-zeng-lu-jing-by-leet/ 给定一个整数矩阵,找出最长递增路径的长度。 对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即...

question_mark的博客 1108

基于单片机控制双向可控硅灯光强度设计

*单片机设计介绍,基于单片机控制双向可控硅灯光强度设计。

QQ2193276455的博客 2457

Java实现 LeetCode 329 矩阵中的最长递增路径

329. 矩阵中的最长递增路径 给定一个整数矩阵,找出最长递增路径的长度。 对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。 示例 1: 输入: nums = [ [9,9,4], [6,6,8], [2,1,1] ] 输出: 4 解释: 最长递增路径为 [1, 2, 6, 9]。 示例 2: 输入: nums = [ [3,4,5],...

南 墙 1万+

NoC架构深度解析:从拓扑结构到流量控制的全面指南

本文深入解析了片上网络(NoC)架构,从总线架构的瓶颈出发,阐述了NoC作为芯片内部“交通网”的核心优势。文章详细探讨了主流拓扑结构(如Mesh、Torus、Ring)的选型权衡,并系统介绍了数据包格式、路由算法、路由器流水线、流量控制机制以及网络接口(NI)设计,为理解现代多核SoC的通信基石提供了全面指南。

gg901的博客 1042

oracle合并行---解决listagg 拼接字段返回过长 (Ora-01489 result of String concatenation is too long)

oracle合并行---解决listagg 拼接字段返回过长 (Ora-01489 result of String concatenation is too long)

清影的博客 6283

每日一题——矩阵最长递增路径

每日一题——矩阵最长递增路径

zxjiaya的博客 2101

全网唯一OpenCyphal/UAVCAN教程(8)libcanard介绍

当Cyphal里,这个结构体代表一条完整的Cyphal消息,之后我们会根据metadata里提供的元信息,其实就是消息ID,调用对应的反序列化函数,将payload还原成具体的Cyphal消息。用于构造一个新的发送队列,原则上一个can物理接口需要分配一个发送队列,如果它们的MTU大小一致,是可以共用一条的。这个库不包含IO层,是平台无关的,意义是没有实现具体的数据收发,仅提供将发送出去的Cyphal消息转成can帧,以及将收到的can帧转成Cyphal消息。返回值是这条消息拆解成的can帧的数目。....

二进制君 2406

[Lc6_记忆化搜索] 最长递增子序列 | 矩阵中的最长递增路径

  int ret=1;  //在for前初始化     //!!!!! 必须等于1,如果pos是最后一个,循环进不去,但它也是一个子序列,返回1才对.  return 通过Max选择  返回该点最长路径 主函数也要for

No Game No Life 1544

零基础学simulink仿真建模--基于Simulink进行近端策略优化(PPO)路径规划的仿真建模

特点高效性与稳定性:通过引入剪裁机制,在更新策略时限制步长,从而提高了训练过程的稳定性和效率。适用于多种动作空间:可以处理连续和离散的动作空间问题。无需模型:不需要预先知道环境的确切模型,适合复杂或未知环境。挑战收敛速度与稳定性:确保算法能够在合理的时间内找到近似最优解,并保持训练过程的稳定性。探索与利用平衡:在探索新路径和利用已知信息之间取得平衡。计算资源:对于大规模状态空间和动作空间,计算资源需求较高。首先明确要模拟的任务内容。目标(例如到达指定地点、避开障碍物等)。

amy_mhd的博客 250

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

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

示例 2:[https://assets.leetcode.com/uploads/2021/01/27/tmp-grid.jpg]输入:matrix = [[3,4,5],[3,2,6],[2,2,1]]输出:4 解释:最长递增路径是 [3, 4, 5, 6]。注意不允许在对角线方向上移动。输入:matrix = [[9,9,4],[6,6,8],[2,1,1]]​。输入:matrix = [[3,4,5],[3,2,6],[2,2,1]]​。逻辑展开:掌握这道题的细节,比如,右,左,下,上的顺序。

doting__的博客 852

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

[LeetCode][C++]矩阵中的最长递增路径

矩阵中的最长递增路径 给定一个整数矩阵,找出最长递增路径的长度。 对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。 示例 1: 输入: nums = [ [9,9,4], [6,6,8], [2,1,1] ] 输出: 4 解释: 最长递增路径为 [1, 2, 6, 9]。 示例 2: 输入: nums = [ [3,4,5], [3,2,6], [2,2,1] ] 输出: 4 解释: 最长递增路径是 [3, 4, 5, 6]。注意不允许在对角线方

qq_41221520的博客 1084

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

矩阵最长递增路径

矩阵最长递增路径 解题思路 深度优先搜索,由于序列递增,因此无需回溯 实现代码 import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 递增路径的最大长度 * @param matrix int整型二维数组 描述矩阵的每个数 * @return int整型 */ private int res = Intege

weixin_37841366的博客 230

矩阵中的最长递增路径java实现

矩阵中的最长递增路径 https://leetcode-cn.com/problems/longest-increasing-path-in-a-matrix/ 给定一个整数矩阵,找出最长递增路径的长度。 对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。 示例 1: 输入: nums = [ [9,9,4], [6,6,8], [2,1,1] ] 输出: 4 解释: 最长递增路径为[1, 2, 6, 9]。 示例 2...

WukongGo的博客 634

96 矩阵中的最长递增路径

转载:https://blog.youkuaiyun.com/zangdaiyang1991/article/details/94560545 96 矩阵中的最长递增路径 作者: Turbo时间限制: 1S章节: 宽度优先搜索 问题描述 : 给定一个整数矩阵,找出最长递增路径的长度。 对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。 示例 1: 输入矩阵: [9,9,4], [6,6,8], [2,1,1] 输出: 4 解释: 最长递增路径为 [1, 2,

内在的天空 286
上一篇: realsense深度图测试程序
下一篇: git持续学习
黑猫爱小鹿
博客等级 码龄8年 1万+粉丝 205原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值