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

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

示例 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]。注意不允许在对角线方向上移动。

思路:记忆化搜索即可。

public class Solution {private static final int[][] dirs = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};private int m, n;public int longestIncreasingPath(int[][] matrix) {if (matrix.length == 0) return 0;m = matrix.length; n = matrix[0].length;int[][] cache = new int[m][n];int ans = 0;for (int i = 0; i < m; ++i)for (int j = 0; j < n; ++j)ans = Math.max(ans, dfs(matrix, i, j, cache));return ans;}private int dfs(int[][] matrix, int i, int j, int[][] cache) {if (cache[i][j] != 0) return cache[i][j];for (int[] d : dirs) {int x = i + d[0], y = j + d[1];if (0 <= x && x < m && 0 <= y && y < n && matrix[x][y] > matrix[i][j])cache[i][j] = Math.max(cache[i][j], dfs(matrix, x, y, cache));}return ++cache[i][j];}
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. Mac环境下svn的使用
  2. MySQL启动关闭添加到 /etc/init.d/mysqld
  3. MySQL Windows ZIP 免费安装和启动设置
  4. UnicodeEncodeError: 'UCS-2' codec can't encode characters in position 8-8: Non-BMP character not sup
  5. 服务器工具个人免费版下载使用,xshell个人免费版,xftp个人免费版
  6. 一起用ipython
  7. Python selenium web UI之Chrome 与 Chromedriver对应版本映射表及下载地址和配置(windows, Mac OS)...
  8. juc是什么java_JUC简介
  9. 信奥中的数学:信息论基础
  10. linux安装pytorch-GPU版本
  11. 2.Rails程序框架
  12. netbeasn支持php7吗,php7+nginx+netbeans使用debug配置注意
  13. 禁用 device/credential guard_iOS 13.3.1 Beta版中引入了禁用U1超宽带芯片的开关
  14. Python(二):基本数据类型、序列的基本操作
  15. Sql Server快速入门
  16. js获取当前页面url信息
  17. Linux驱动开发: FrameBuffe(LCD)驱动开发
  18. 电压负反馈放大电路(基于三极管)
  19. java对象为什么要实现序列化
  20. Edit Control响应全选(Ctrl+A)

热门文章

  1. ffmpeg php linux,linux(php环境) 安装ffmpeg
  2. mongodb 库数量限制_MongoDB in 数量限制
  3. java arraylist范围_Java常见集合之ArrayList深入分析
  4. jmeter找不到java_Windows下Jmeter安装出现Not able to find Java executable or version问题解决方案...
  5. 【转】C#开发奇技淫巧二:根据dll文件加载C++或者Delphi插件
  6. 【转】一键将Web应用发布到云-Azure Web App!
  7. visual-studio – 使用TFS 2010防止在Visual Studio 2012上签入pdb文件
  8. (译)你应该知道的jQuery技巧
  9. Ubuntu下安装Chrome浏览器的两个方法
  10. 提供写入的数据少于指定的数据_指定范围数据的汇总