leetcode329. 矩阵中的最长递增路径(dfs)
给定一个整数矩阵,找出最长递增路径的长度。对于每个单元格,你可以往上,下,左,右四个方向移动。 你不能在对角线方向上移动或移动到边界外(即不允许环绕)。示例 1:输入: nums =
[[9,9,4],[6,6,8],[2,1,1]
]
输出: 4
解释: 最长递增路径为 [1, 2, 6, 9]。
代码
class Solution {int[][] check;public int longestIncreasingPath(int[][] matrix) {int[][] dir = new int[][]{{-1, 0}, {1, 0}, {0, 1}, {0, -1}};if(matrix.length==0) return 0;int n=matrix.length,m=matrix[0].length;check=new int[n][m];//记录下节点的最长递增路径int res=0;for(int i=0;i<n;i++)for(int j=0;j<m;j++){if(check[i][j]==0)//当前没有计算路径长度IncreasingPath(matrix,i,j,dir);res= Math.max(res,check[i][j]);//比较得出最大值}return res;}public int IncreasingPath(int[][] matrix,int x,int y,int[][] dir) {if(check[x][y]!=0) return check[x][y];int temp=0;check[x][y]=1;//以当前节点为起点for(int[] d:dir)//遍历4个方向{int nextX=d[0]+x,nextY=d[1]+y;if(nextX<0||nextY<0||nextX>=matrix.length||nextY>=matrix[0].length||matrix[nextX][nextY]<=matrix[x][y]) continue;//不满足的节点不访问temp= Math.max(temp,IncreasingPath(matrix,nextX,nextY,dir));//找出最长路径}check[x][y]+=temp;return check[x][y];}
}
leetcode329. 矩阵中的最长递增路径(dfs)相关推荐
- Leetcode--329. 矩阵中的最长递增路径
给定一个整数矩阵,找出最长递增路径的长度. 对于每个单元格,你可以往上,下,左,右四个方向移动. 你不能在对角线方向上移动或移动到边界外(即不允许环绕). 示例 1: 输入: nums = [ ...
- leetcode329. 矩阵中的最长递增路径
给定一个整数矩阵,找出最长递增路径的长度. 对于每个单元格,你可以往上,下,左,右四个方向移动. 你不能在对角线方向上移动或移动到边界外(即不允许环绕). 示例 1: 输入: nums = [ ...
- [Leetcode][第329题][JAVA][矩阵中的最长递增路径][DFS][拓扑排序]
[问题描述][中等] [解答思路] 1. 记忆化深度优先搜索 复杂度 class Solution {public int[][] dirs = {{-1, 0}, {1, 0}, {0, -1}, ...
- 329. Longest Increasing Path in a Matrix 矩阵中的最长递增路径
给定一个整数矩阵,找出最长递增路径的长度. 对于每个单元格,你可以往上,下,左,右四个方向移动. 你不能在对角线方向上移动或移动到边界外(即不允许环绕). 示例 1: 输入: nums = [[9,9 ...
- 矩阵中的最长递增路径
矩阵中的最长递增路径 文章目录 矩阵中的最长递增路径 一.问题描述 **方法一:朴素的深度优先搜索 [超时]** **方法二:记忆化深度优先搜索 [通过]** **方法三:动态规划** **方法四:广 ...
- java某个起点出发的最长路径_【leetcode-动态规划】矩阵中的最长递增路径
[leetcode-动态规划]矩阵中的最长递增路径 题目: 给定一个整数矩阵,找出最长递增路径的长度. 对于每个单元格,你可以往上,下,左,右四个方向移动. 你不能在对角线方向上移动或移动到边界外(即 ...
- 329. 矩阵中的最长递增路径
2020-06-09 1.题目描述 矩阵中的最长递增路径 2.题解 在这里我们可以将其视作有向图,如果当前的数比其四周位置上的数要小的话,就构建一条从当前数指向其 周围的边,要求得最长的递增路径,那么 ...
- 329 矩阵中的最长递增路径
题目描述: 给定一个整数矩阵,找出最长递增路径的长度. 对于每个单元格,你可以往上,下,左,右四个方向移动. 你不能在对角线方向上移动或移动到边界外(即不允许环绕). 示例 1: 输入: nums = ...
- 算法-------矩阵中的最长递增路径(Java版本)
题目 给定一个整数矩阵,找出最长递增路径的长度.对于每个单元格,你可以往上,下,左,右四个方向移动. 你不能在对角线方向上移动或移动到边界外(即不允许环绕).示例 1:输入: nums = [[9,9 ...
最新文章
- HNOI2019游记
- 聚集索引与非聚集索引的总结
- Ubuntu 16.04 安装JDK
- RabbitMQ消息手动应答生产者
- 结果显示窗口如何缩小_【操作教程】零基础如何学习PS与Sai?
- Versant 对象型数据库
- 【原创】利用腾讯和百度的AI接口识别验证码
- 组了个视频号的局,汇报下数据!
- 原生js写简单轮播图方式1-从左向右滑动
- 对冲基金很需要:K、Q在哪里?
- Python程序发布(打包)及pyInstaller、cx_Freeze工具使用介绍
- 金蝶K/3WISE V14.0安装包下载地址,金蝶K3 WISE V14.0安装包资源包下载链接
- 淘宝双11的服务器架构分析(1)
- 互联网晚报 | 12月5日 星期日 | 饿了么启用AI技术研发新菜品;搜狐将布局知识直播;《英雄联盟手游》获选苹果年度游戏...
- TeXLive升级教程
- python中re.group()
- 1919: 【提高】滑翔翼
- 铁甲雄兵哪个服务器人最多,超级玩家第三期——铁甲雄兵全区最高等级玩家
- 计算机文化学习笔记3
- java报错The method get_discount() is undefined for the type该如何处理?