cde网站_cde6150a车床

cde网站_cde6150a车床给定一个 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/169060.html原文链接:https://javaforall.net

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


相关推荐

  • keil4注册机注册不了怎么办?我已经试过下面的注册机不行。求各大神指教一下?

    keil4注册机注册不了怎么办?我已经试过下面的注册机不行。求各大神指教一下?

    2022年5月13日
    53
  • ant安装配置使用介绍及eclipse中使用

    ant安装配置使用介绍及eclipse中使用一、安装ant到官方主页http://ant.apache.org下载新版(目前为Ant1.8.1)的ant,得到的是一个apache-ant-1.8.1-bin.zip的压缩包。将其解压到你的硬盘上,例如:C:\apache-ant-1.8.1。ant是java编写的,具有跨平台特点。.需要安装JDK,二、配置环境变量window中设置ant环境变量:配置环境变量

    2022年7月18日
    15
  • Linux移植的一般过程

    前一阵子在公司移植Linux2.6到一块ARM11的开发板上,下面粗略讲讲移植Linux的一般过程。一开始的UBOOT的移植不多说了。UBOOT最后有两种方式进入Linux,一种是使用uImage,

    2021年12月26日
    246
  • 文件服务器 ldap,windows下搭建ldap服务器[通俗易懂]

    文件服务器 ldap,windows下搭建ldap服务器[通俗易懂]windows下搭建ldap服务器内容精选换一换当您发现云服务器的运行速度变慢或云服务器突然出现网络断开的情况,则可能是云服务器的带宽和CPU利用率过高导致。如果您已经通过云监控服务创建过告警任务,当CPU或带宽利用率高时,系统会自动发送告警给您。Windows云服务器带宽流量过高或CPU利用率高,您可以按如下步骤进行排查:问题定位:定位影响云服务器带宽和CPU利用率高的进程。Wind本文以云服…

    2022年5月15日
    61
  • c语言背包问题(动态规划解法)

    c语言背包问题(动态规划解法)题目描述:有若干个物品要装进背包,并且每个物品有各自的价值,物品的数量、价值以及背包的容量由用户输入,求背包内能够存入的最大价值为多少,并且求出此时放入了哪些物品输入格式:第一行输入物品的容量r和物品个数n第二行输入每个物品的重量第三行输入每个物品的价值输出格式:第一行输出背包中能够存储的最大价值第二行输出此时背包中的物品编号思路分析:可以把这个问题看成是一个二维数组,行是物品编号,列是背包容量,若物品编号为2,背包容量为4,代表的则是当背包容量为..

    2022年7月14日
    15
  • USB转485/232

    USB转485/232USB转485模块双向传输防浪涌屏蔽线UT-890a/Z-TECUSB转232模块双向传输防浪涌屏蔽线Z-TEC

    2022年5月1日
    35

发表回复

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

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