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

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

示例 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) {
        if (matrix.empty() || matrix[0].empty()) return 0;
        int m = matrix.size(), n = matrix[0].size(), res = 1;
        vector<vector<int>> dirs{{0,-1},{-1,0},{0,1},{1,0}};
        vector<vector<int>> dp(m, vector<int>(n, 0));
        for (int i = 0; i < m; ++i) {
            for (int j = 0; j < n; ++j ) {
                if (dp[i][j] > 0) continue;
                queue<pair<int, int>> q{{{i, j}}};
                int cnt = 1;
                while (!q.empty()) {
                    ++cnt;
                    int len = q.size();
                    for (int k = 0; k < len; ++k) {
                        auto t = q.front(); q.pop();
                        for (auto dir : dirs) {
                            int x = t.first + dir[0], y = t.second + dir[1];
                            if (x < 0 || x >= m || y < 0 || y >= n || matrix[x][y] <= matrix[t.first][t.second] || cnt <= dp[x][y]) continue;
                            dp[x][y] = cnt;
                            res = max(res, cnt);
                            q.push({x, y});
                        }
                    }
                }
            }
        }
        return res;
    }
};

329.矩阵中的最长递增路径相关推荐

  1. 329. 矩阵中的最长递增路径

    2020-06-09 1.题目描述 矩阵中的最长递增路径 2.题解 在这里我们可以将其视作有向图,如果当前的数比其四周位置上的数要小的话,就构建一条从当前数指向其 周围的边,要求得最长的递增路径,那么 ...

  2. 329 矩阵中的最长递增路径

    题目描述: 给定一个整数矩阵,找出最长递增路径的长度. 对于每个单元格,你可以往上,下,左,右四个方向移动. 你不能在对角线方向上移动或移动到边界外(即不允许环绕). 示例 1: 输入: nums = ...

  3. LeetCode 329. 矩阵中的最长递增路径(记忆化递归)

    文章目录 1. 题目 2. 解题 2.1 记忆化递归 2.2 拓扑排序 1. 题目 给定一个整数矩阵,找出最长递增路径的长度. 对于每个单元格,你可以往上,下,左,右四个方向移动. 你不能在对角线方向 ...

  4. 329. Longest Increasing Path in a Matrix 矩阵中的最长递增路径

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

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

    矩阵中的最长递增路径 文章目录 矩阵中的最长递增路径 一.问题描述 **方法一:朴素的深度优先搜索 [超时]** **方法二:记忆化深度优先搜索 [通过]** **方法三:动态规划** **方法四:广 ...

  6. java某个起点出发的最长路径_【leetcode-动态规划】矩阵中的最长递增路径

    [leetcode-动态规划]矩阵中的最长递增路径 题目: 给定一个整数矩阵,找出最长递增路径的长度. 对于每个单元格,你可以往上,下,左,右四个方向移动. 你不能在对角线方向上移动或移动到边界外(即 ...

  7. Leetcode--329. 矩阵中的最长递增路径

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

  8. 算法-------矩阵中的最长递增路径(Java版本)

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

  9. leetcode329. 矩阵中的最长递增路径(dfs)

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

  10. leetcode329. 矩阵中的最长递增路径

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

最新文章

  1. 如何将风险应用加入白名单_将微信服务器、API接口的IP列表加入宝塔防火墙IP白名单...
  2. java输出五行菱形_Java打印一个菱形
  3. 【Laravel】连接sqlite,Database [] not configured,sqlite example
  4. 【JPA操作】CriteriaQuery多条件查询
  5. ORACLE 12C采坑之 ORA-12541:TNS:无监听程序
  6. 今天要查一下,如果没有密保手机的号码在使用,怎么更换qq的密保手机
  7. idea java sdk找不到指定文件路径_java-IntelliJ找不到任何声明
  8. python实现文本编辑器_Python实现文本编辑器功能实例详解
  9. Django内置数据表
  10. DVD-Cloner 2021 for mac(DVD光盘刻录工具)
  11. SQL Server 2005系列教学(12) 导入导出服务
  12. Zoho中国:如何利用好免费版CRM
  13. ToC和ToB有啥区别
  14. 高等数学学习笔记——第五十四讲——向量的数量积、向量积和混合积
  15. Jetson nano——控制风扇旋转速度的方法
  16. NEO4J的安装配置及使用总结
  17. 第二十八节:Java基础-进阶继承,抽象类,接口
  18. 免费CDN加速服务 jsDelivr 支持npm,GitHub,WordPress
  19. 脚步加载效果-CSS3
  20. 《敏捷个人》周刊 第11期 (可下载)

热门文章

  1. 50个提高会话技巧的方法 (转IT经理人)
  2. js中数组的一些常见操作 - 1
  3. Hibernate方法save、update、merge、saveOrUpdate及get和load的区别
  4. PHP中使用了mcrypt_decrypt函数处理Json Json_decode 返回空值或者 NULL 的问题 json_last_error 3...
  5. 创新团队中常见的几种“怪人”
  6. (莱昂氏unix源代码分析导读-49) 字符缓冲区
  7. Ubuntu下PHP开发环境LAMP搭建
  8. RegSetValueEx 计算WCHAR字符长度 wcslen
  9. radiobutton在listview中处理
  10. vs.net已经检测到制定的WEB服务器运行的不是ASP.NET1.1版,你无法运行ASP.NET WEB应用程序或服务...