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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • debian apt-get update报错GPG error

    debian apt-get update报错GPG error查看http://ftp-master.debian.org/查看“Archivesigningkey”,点击download或者wgethttp://ftp-master.debian.org/archive-key-5.0.asc然后apt-keyaddarchive-key-5.0.ascOK也有可能是另一个问题:

    2022年10月9日
    5
  • Gloand 2021 激活码【2021.10最新】

    (Gloand 2021 激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月28日
    46
  • acwing1185. 单词游戏(欧拉图)「建议收藏」

    acwing1185. 单词游戏(欧拉图)「建议收藏」有 N 个盘子,每个盘子上写着一个仅由小写字母组成的英文单词。你需要给这些盘子安排一个合适的顺序,使得相邻两个盘子中,前一个盘子上单词的末字母等于后一个盘子上单词的首字母。请你编写一个程序,判断是否能达到这一要求。输入格式第一行包含整数 T,表示共有 T 组测试数据。每组数据第一行包含整数 N,表示盘子数量。接下来 N 行,每行包含一个小写字母字符串,表示一个盘子上的单词。一个单词可能出现多次。输出格式如果存在合法解,则输出”Ordering is possible.”,否则输出”The

    2022年8月9日
    3
  • http、https、ftp、talnet的默认端口号「建议收藏」

    http、https、ftp、talnet的默认端口号「建议收藏」http:80https:443(安全协议)ftp:21(文件传输协议)telent:23(远程控制登录协议)tomcat:8080mysql:3306redis:6379

    2022年6月15日
    42
  • jdbc的增删改查_使用jdbc完成数据的增删改查

    jdbc的增删改查_使用jdbc完成数据的增删改查JBDC数据的持久化:把数据保存到磁盘上。JDBC是java访问数据库的基石,JDO,Hibernate,Mybatis等都是基于JDBCJDBC是一个独立于特定数据库的管理系统,通用的SQL数据库存取和操作的公共接口配置文件:jdbc.propertiesuser=rootpassword=abc123url=jdbc:mysql://localhost:3306/testdriverClass=com.mysql.jdbc.Driver获取Connectionpublic s

    2022年8月8日
    2
  • ibm x201 怎么清理内部_联想 Thinkpad x201i怎么拆机清理风扇灰尘?_硬件教程「建议收藏」

    ibm x201 怎么清理内部_联想 Thinkpad x201i怎么拆机清理风扇灰尘?_硬件教程「建议收藏」笔记本散热风扇使用时间长了就累积很多灰尘,堵塞出风口,从而大幅降低散热效果。因此有必要对其清理。要彻底清理风扇灰尘,需要拆机方可。首先要把笔记本的电池取下。这款笔记本的硬盘仓很隐蔽,不过在D面还是有明显的图标提示,拧下螺丝和卡扣,即可看到硬盘。硬盘盖拆下来之后,只需用力的拔出黑带即可把硬盘取下。电池、硬盘、内存都取下之后,我们用螺丝刀把D壳周围的螺丝你拧下,之后就可以开始拆卸键盘以及外壳了。拆卸键…

    2022年6月27日
    53

发表回复

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

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