首页 > 其他分享 >剑指 Offer II 112. 最长递增路径-----记忆化搜索

剑指 Offer II 112. 最长递增路径-----记忆化搜索

时间:2022-08-27 11:33:08浏览次数:79  
标签:return matrix Offer int res dfs II ----- dis

题目表述

给定一个 m x n 整数矩阵 matrix ,找出其中 最长递增路径 的长度。

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

输入:matrix = [[9,9,4],[6,6,8],[2,1,1]]
输出:4
解释:最长递增路径为 [1, 2, 6, 9]。

记忆化搜索

class Solution {
        int[][] dirs = new int[][]{{1,0}, {-1, 0}, {0, -1}, {0, 1}};
    int[][] dis;
    int res = 0;
    public int longestIncreasingPath(int[][] matrix) {
        int m = matrix.length;
        int n = matrix[0].length;
        dis = new int[m][n];
        for(int i = 0; i < m;i++){
            for(int j = 0; j < n;j++){
                dis[i][j] = dfs(matrix, i,j,m,n);
                res = Math.max(dis[i][j], res);
            }
        }
        return res;
    }
        public int dfs(int[][] matrix, int x, int y, int m, int n){
        if(dis[x][y] != 0) return dis[x][y];
        dis[x][y]++;
        int max = 0;
        for(int[] dir : dirs){
            int i = x + dir[0];
            int j = y + dir[1];
            if(i < 0 || i >= m || j < 0 || j >=n) continue;
            if(matrix[x][y] >= matrix[i][j]) continue;
            dis[x][y] = Math.max(dfs(matrix, i, j, m, n) + 1, dis[x][y]);
        }
        return dis[x][y];
    }
}

标签:return,matrix,Offer,int,res,dfs,II,-----,dis
From: https://www.cnblogs.com/youngerwb/p/16630196.html

相关文章

  • vue使用组件<el-date-picker>报错:Avoid mutating a prop directly since the value will
    Vue使用element-ui组件库中的<el-data-picker>标签报错报以下错误,最开始我以为是props通信的问题,但后来发现是版本出现问题导致的解决办法:版本2.14.1的版本已经都不可......
  • CCF 202112-2 序列查询新解(C++)
    该题关键点在于:分段计算先对f分段:for(inti=1;i<=n+1;i++)//以f(i)为区域划分计算在此区域内f的取值相同,值为:i-1。再对每个f值相同的区域按照g值进行分段:for(int......
  • JPA 入门实战(3)--Spring Boot 中使用 JPA
    本文主要介绍在SpringBoot中使用JPA的方法(暂不使用spring-data-jpa),相关的环境及软件信息如下:SpringBoot2.6.10、JPA2.2、eclipselink2.7.10。1、原生使用该......
  • MySQL MGR新增成员-xtrabackup
    4.6.在组复制中使用备份数据恢复失败的成员或增加新成员由于官方手册中使用了企业版的mysqlbackup做演示步骤,以下本节内容采用开源的percona-xtrabackup8.0.7版本演示对......
  • C - Candles
    题目链接:C-Candles(atcoder.jp)题目大意:给你n个蜡烛的坐标,你想点燃其中k个蜡烛,一开始你在坐标0,每次向左或者向右可以移动一格,问点燃k个蜡烛至少需要移动多少步。分......
  • JavaSE-Day02-Java方法
    Java方法什么是方法System.out.println() 类.对象.方法()Java方法是语句的集合,他们在一起执行一个功能方法是解决一类问题的步骤的有序集合方法包含于类或对象之中......
  • 8、开发工具软件 - 软件技术系列文章
        在实际的软件开发和项目管理过程中,都需要很多的工具软件,使用这些软件,能够提高软件人员的工作效率,笔者在总结软件技术的时候,就收集整理了一些软件工具,以便需要的......
  • 7、软件复用 - 软件技术系列文章
        软件复用主要是为了解决在实际的软件开发过程中重复的工作,在其它软件功能相同或相近的时候,直接将代码放过去然后进行下修改即可。这个也是参考的软件定制,比如购......
  • self4j 微服务日志配置-按微服务应用分别生成不同的日志文件
    如题:效果是:在/opt/myApps/logs/app1/app1.log/opt/myApps/logs/app2/app2.log每个应用独立存储日志;<?xmlversion="1.0"encoding="UTF-8"?><configuration><spr......
  • GBPC5010W-ASEMI马达专用方桥GBPC5010W
    编辑:llGBPC5010W-ASEMI马达专用方桥GBPC5010W型号:GBPC5010W品牌:ASEMI封装:GBPCW-4正向电流:50A反向电压:1000V引脚数量:4芯片个数:4芯片尺寸:210MIL漏电流:>10ua恢复时间:ns浪涌电......