cde网站_zaqxswcde

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

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

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

示例 1:

在这里插入图片描述

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

示例 2:

在这里插入图片描述

输入: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
0 <= matrix[i][j] <= 231 – 1

  1. 拓扑排序
const int N = 4e4 + 10;
const int M = 4 * N;
const int INF = 0x3f3f3f3f;
class Solution { 
   
public:
    int dx[4] = { 
   0,1,0,-1},dy[4] = { 
   -1,0,1,0};
    int n,m;
    struct Edge{ 
   
        int v,next;
    }edge[M];
    int head[N],cnt;
    void add(int u,int v){ 
   
        edge[cnt].v = v;
        edge[cnt].next = head[u];
        head[u] = cnt ++;
    }
    int in[N];
    int q[N],hh = 0,tt = 0;
    int dist[N];
    int get(int x,int y){ 
   
        return x * m + y;
    }
    int topsort(){ 
   
        memset(dist,0,sizeof dist);
        for(int i = 0;i < n * m;i ++){ 
   
            if(in[i] == 0)q[tt ++] = i,dist[i] = 0;
        }
        while(hh != tt){ 
   
            int t = q[hh ++];
            if(hh == N)hh = 0;
            for(int i = head[t];~i;i = edge[i].next){ 
   
                int v = edge[i].v;
                dist[v] = max(dist[v],dist[t] + 1);
                in[v] --;
                if(in[v] == 0){ 
   
                    q[tt ++] = v;
                    if(tt == N)tt = 0;
                }
            }
        }
        int res = 0;
        for(int i = 0;i < n * m;i ++)res = max(res,dist[i]);
        return res + 1;
    }
    int longestIncreasingPath(vector<vector<int>>& matrix) { 
   
        n = matrix.size(),m = matrix[0].size();
        memset(head,-1,sizeof head);
        cnt = 0;
        for(int i = 0;i < n;i ++){ 
   
            for(int j = 0;j < m;j ++){ 
   
                for(int k = 0;k < 4;k ++){ 
   
                    int a = i + dx[k],b = j + dy[k];
                    if(a < 0 || a >= n || b < 0 || b >= m)continue;
                    if(matrix[i][j] > matrix[a][b]){ 
   
                        add(get(i,j),get(a,b));
                        in[get(a,b)] ++;
                    }
                }
            }
        }
        int ans = topsort();
        return ans;
    }
};
  1. 记忆化搜索
const int N = 210;
class Solution { 
   
public:
    int rem[N][N];
    bool st[N][N];
    int n,m;
    int dx[4] = { 
   0,1,0,-1},dy[4] = { 
   -1,0,1,0};
    int dfs(int i,int j,vector<vector<int>>& matrix){ 
   
        int &r = rem[i][j];
        int ma = 0;
        if(r > 0)return r;
        for(int k = 0;k < 4;k ++){ 
   
            int a = i + dx[k],b = j + dy[k];
            if(a < 0 || a >= n || b < 0 || b >= m || matrix[i][j] >= matrix[a][b])continue;
            ma = max(ma,dfs(a,b,matrix));
        }
        r = ma + 1;
        return r;
    }
    int longestIncreasingPath(vector<vector<int>>& matrix) { 
   
        n = matrix.size(),m = matrix[0].size();
        int res = 0;
        for(int i = 0;i < n;i ++){ 
   
            for(int j = 0;j < m;j ++){ 
   
                res = max(res,dfs(i,j,matrix));
            }
        }
        return res;
    }
};
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/168541.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Apache Tomcat 安装配置图文详细教程[通俗易懂]

    Apache Tomcat 安装配置图文详细教程[通俗易懂]一、安装JDK步骤及配置JDK环境变量步骤省略。二、安装Tomcat(提前请先安装JDK)1.下载好压缩包后,直接解压至某一目录下,目录中不能包含中文。解压后如图所示:2.将此文件夹拷贝到你常用的根目录下。这样就算安装好了!3.接下来开始配置环境变量,打开环境变量同上操作,不在赘述。然后新建一个系统变量:TOMCAT_HOME=C:\Java\Tomcat\apache-tomcat-7.0.90…

    2022年6月9日
    41
  • CGLIB(Code Generation Library)详解[通俗易懂]

    CGLIB(Code Generation Library)详解[通俗易懂]什么是CGLIBCGLIB是一个强大的、高性能的代码生成库。其被广泛应用于AOP框架(Spring、dynaop)中,用以提供方法拦截操作。Hibernate作为一个比较受欢迎的ORM框架,同样使用CGLIB来代理单端(多对一和一对一)关联(延迟提取集合使用的另一种机制)。CGLIB作为一个开源项目,其代码托管在github,地址为:https://github.com/cglib/cglib为什么

    2022年5月1日
    50
  • 利用网页内容监控来提升网站收录排名

    利用网页内容监控来提升网站收录排名我们做网站最主要的是提升流量来获取收益,流量高了,知名度也回相应的提升,从而获得的收益也越多。提升流量的关键是,内容、收录于排名。有大量高质量的收录内容,配合靠前的排名,流量自然就涨了。那么如何提升网站收录排名呢?web视界就在网站收录这点来给大家介绍。首先要区分网站是新站还是老站。一、新站 网站是新站,新站关键词排名是不稳定的,有的时候你可能会受到新站保护获取一些关键词排名,但是这…

    2022年7月17日
    13
  • Lenovo windows 解决win键失灵

    Lenovo windows 解决win键失灵电脑突然win键就不能用了,实在太影响使用了!!!上网查了查,估计是把win键锁住了要解锁的话,好像不同的电脑不太一样我的电脑是lenovo的F9+Fn就能开关win键如果不可以的话,建议按住Fn键其他的组合键挨个试一下。…

    2022年5月9日
    61
  • 常用的数据链路层协议_数据链路层和网络层

    常用的数据链路层协议_数据链路层和网络层由于以太网中的所有的主机共享一个通信信道,因此在同一时刻只允许有一台主机发送数据,否则各个主机发送的数据就会相互干扰。站在系统的角度来看,这里各个主机所共享的通信信道就是一种临界资源,这个临界资源同一时刻只允许一台主机使用。……

    2022年10月22日
    0
  • python获取当前系统的日期_python怎么获取当前系统时间

    python获取当前系统的日期_python怎么获取当前系统时间python获取当前系统时间,包括年月日,时分秒,主要通过Python中的datetime模块来实现。下面我们就通过具体的代码示例,给大家详细介绍Python获取当前时间日期的实现方法。代码示例如下:importdatetimenow=datetime.datetime.now()print(“当前系统日期和时间是:”)print(now.strftime(“%Y-%m-%d%H:%…

    2022年10月19日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号