题解 | #矩阵最长递增路径#

矩阵最长递增路径

http://www.nowcoder.com/practice/7a71a88cdf294ce6bdf54c899be967a2

记忆化搜索,根据题意可利用 dfs 进行求解,因为路径是递增的,已走过的路径可缓存,利用 递归 + 备忘录的方式求解

#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 递增路径的最大长度
# @param matrix int整型二维数组 描述矩阵的每个数
# @return int整型
#
class Solution:        
    def solve(self , matrix: List[List[int]]) -> int:
        # write code here
        if not matrix:
            return 0
        m, n = len(matrix), len(matrix[0])
        mem = [[0 for _ in range(n)] for _ in range(m)]
        dirs = [(-1, 0), (0, 1), (1, 0), (0, -1)]
        def dfs(x, y):
            nonlocal mem
            if mem[x][y] != 0:
                return mem[x][y]
            else:
                res = 1
                for i, j in dirs:
                    xi, yi = x + i, y + j
                    if 0 <= xi < m and 0 <= yi < n and matrix[xi][yi] > matrix[x][y]:
                        res = max(res, dfs(xi, yi) + 1)
                mem[x][y] = res
                return mem[x][y]
        res = 0
        for i in range(m):
            for j in range(n):
                res = max(res, dfs(i, j))
        return res
    
    
        
题解 文章被收录于专栏

算法题解

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-11 17:10
什么素质,我请问呢,要掉小珍珠了。。。又憋屈又生气
Steven267:这不喷回去?花钱是大爷,记住这个道理
点赞 评论 收藏
分享
每晚夜里独自颤抖:要求太多的没必要理
点赞 评论 收藏
分享
码农索隆:单休一个月少休息4天,一年就是48天,平时节假日,别人3天假期,单休的两天
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务