矩阵中的最长递增路径

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

信捷XDH PLC多轴运动控制实战:Ethercat总线下的C语言封装技巧

本文深入探讨了在信捷XDH PLC平台上,如何利用C语言对EtherCAT总线多轴运动控制进行高效封装。通过设计全局数据池、模块化状态机及用户友好接口,将底层复杂的运动控制函数库抽象为清晰、可复用的高级模块,显著提升程序稳定性与可维护性,并分享了关键的实战避坑经验。

weixin_29188043的博客 160

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

我们从下面这个图来分析,最长的递增路径,终点必定是图里面某个点,假设点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

UFS逻辑单元管理

介绍UFS 逻辑单元管理和配置

m0_51720747的博客 1947

从零到一:Cadence AC仿真中的运放性能参数深度解析与实战避坑指南

本文深度解析Cadence AC仿真中运放性能参数的精确测量方法,包括开环增益、带宽和相位裕度等关键指标。通过实战案例分享常见设置错误的避坑技巧,帮助工程师提升设计成功率和仿真效率,特别针对全差分运放和工艺角分析提供专业指导。

www00的博客 294

矩阵中的最长递增路径(困难)/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

智能排班考勤系统原型

可实现从业务预测,到工时预估,再到人员分配全流程自动智能排班。可应用于客服行业或工厂的智能排班系统。

gywm15111336483的专栏 995

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万+

LVGL v9的lv_scale控件实战:5分钟打造动态仪表盘(附完整代码)

本文详细介绍了LVGL v9中lv_scale控件的实战应用,通过5个关键步骤快速打造动态仪表盘。文章涵盖核心特性解析、代码实现、样式定制及性能优化,适用于工业HMI、智能家居等场景,并附完整代码示例。

gin88的博客 262

JPA - @MappedSuperclass - 基类注解

目录前言代码示例 前言 @MappedSuperclass注解一般作为基类的注解,表眀该类是映射的超类,继承于它的子类实体在映射时会自动添加到子类实体的对应数据库表中,用于共同的属性代码复用和模型分离。 代码示例 BaseEntity.java import lombok.Getter; import lombok.Setter; import javax.persistence.MappedSuperclass; import java.util.Date; @Getter @Setter @Ma

Maggieq8324的博客 2065

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

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

zxjiaya的博客 2101

从生成到检测:全面解析Deepfake技术的演进与对抗策略

本文全面解析了Deepfake技术的演进与对抗策略,从GAN生成技术到先进的检测手段,探讨了其在娱乐与安全领域的双重影响。文章详细介绍了Deepfake的核心原理、技术迭代关键节点以及最新的检测方法,揭示了AI生成与识别的激烈博弈。同时,展望了量子计算和生物特征认证在未来攻防战中的潜在应用。

jenkins8butler的博客 255

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

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

No Game No Life 1544

车载以太网测试-3【Wireshark介绍】

数据包捕获支持从多种网络接口(如以太网、Wi-Fi、蓝牙等)捕获数据包。可以实时捕获或从文件中读取已捕获的数据包。协议解析支持解析数百种网络协议(如 TCP/IP、HTTP、DNS、FTP 等)。能够深入解析协议头部和负载,帮助用户理解网络通信的细节。过滤功能提供强大的显示过滤器和捕获过滤器,帮助用户快速定位和分析感兴趣的数据包。支持基于协议、IP地址、端口号等多种条件的过滤。统计和分析提供多种统计工具,如流量图、会话统计、协议分层统计等。

车载网络测试工程师的博客 1989

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

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

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

[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

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

矩阵最长递增路径

矩阵最长递增路径 解题思路 深度优先搜索,由于序列递增,因此无需回溯 实现代码 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、付费专栏及课程。

余额充值