leetcode(329)矩阵中的最大递增路径

Posted erdanyang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode(329)矩阵中的最大递增路径相关的知识,希望对你有一定的参考价值。

矩阵中的最大递增路径

解题思路:动态规划

class Solution 
    public int longestIncreasingPath(int[][] matrix) 
        if(matrix.length==0||matrix[0].length==0)
            return 0;
        
        int xlen = matrix.length;
        int ylen = matrix[0].length;
        int[][][] flags = new int[xlen][ylen][2];
        for(int i=0;i<xlen;i++)
            for(int j=0;j<ylen;j++)
                for(int k=0;k<2;k++)
                    flags[i][j][k]=1;
                
            
        
        int cur = 0;
        boolean ischange = false;
        int ans =1;
        while(true)
            ischange = false;
            for(int i=0;i<xlen;i++)
                for(int j=0;j<ylen;j++)
                    if(i-1>=0&&matrix[i][j]>matrix[i-1][j]&&flags[i][j][1-cur]<flags[i-1][j][cur]+1)
                        flags[i][j][1-cur] = flags[i-1][j][cur]+1;
                    
                    if(j-1>=0&&matrix[i][j]>matrix[i][j-1]&&flags[i][j][1-cur]<flags[i][j-1][cur]+1) 
                        flags[i][j][1-cur] = flags[i][j-1][cur]+1;
                    
                    if(i+1<xlen&&matrix[i][j]>matrix[i+1][j]&&flags[i][j][1-cur]<flags[i+1][j][cur]+1) 
                        flags[i][j][1-cur] = flags[i+1][j][cur]+1;
                    
                    if(j+1<ylen&&matrix[i][j]>matrix[i][j+1]&&flags[i][j][1-cur]<flags[i][j+1][cur]+1) 
                        flags[i][j][1-cur] = flags[i][j+1][cur]+1;
                    
                    if(flags[i][j][1-cur]!=flags[i][j][cur]) 
                        ischange = true;
                    
                
            
            if(ischange) 
                cur = 1-cur;
                ans++;
            else 
                return ans;
            
        
    

 另一种方法:

解题思路:dfs+记忆矩阵

以上是关于leetcode(329)矩阵中的最大递增路径的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode329. 矩阵中的最长递增路径(Java)

python-leetcode329-深度优先搜索矩阵中的最长递增路径

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

leetcode之329矩阵中的最长递增路径Golang

Leetcode之深度优先搜索(DFS)专题-DFS+记忆化 329. 矩阵中的最长递增路径(Longest Increasing Path in a Matrix)

题目地址(329. 矩阵中的最长递增路径)