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

矩阵最长递增路径

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

import java.util.*;
public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     * 递增路径的最大长度
     * @param matrix int整型二维数组 描述矩阵的每个数
     * @return int整型
     */
    int max = 0;//存放结果————最长路径的长度
    ArrayList<Integer> list = new ArrayList<>();//存放一条路径中的元素
    private void Helper(int[][] matrix,int i,int j,boolean[][] used){
        //把当前位置的元素放入到列表中,并把对应的used数组元素置为true,
        //used[i][j]为true表示当前元素已经被使用了,不能被重复使用了
        used[i][j] = true;
        list.add(matrix[i][j]);
        //递归搜索上下左右四个方向
        //搜索之前需要判断坐标合法性,是否递增,元素是否已经被使用过
        if(i - 1 >= 0 && matrix[i-1][j] > matrix[i][j] && !used[i-1][j]){
            Helper(matrix,i-1,j,used);
        }
        if(i + 1 < matrix.length && matrix[i+1][j] > matrix[i][j] && !used[i+1][j]){
            Helper(matrix,i+1,j,used);
        }        
        if(j - 1 >= 0 && matrix[i][j-1] > matrix[i][j] && !used[i][j-1]){
            Helper(matrix,i,j-1,used);
        }        
        if(j + 1 < matrix[i].length && matrix[i][j+1] > matrix[i][j] && !used[i][j+1]){
            Helper(matrix,i,j+1,used);
        }
        //四个方向都搜索完了,说明这条路径已经到了终点:没有合法坐标或者四个方向没有递增的元素
        //判断这条路径长度是否大于max
        int size = list.size();
        if(size > max){
            max = size;
        }
        //回退,删除列表中的当前元素,并把used数组中的当前元素置为false
        list.remove(size-1);
        used[i][j] = false;
    }
    public int solve (int[][] matrix) {
        // write code here
        int row = matrix.length;//matrix数组的行
        int col = matrix[0].length;//matrix数组的列
        boolean[][] used = new boolean[row][col];//用来标记matrix数组中的某个元素是否被使用过
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                //路径的入口不一定只是从左上角开始,可以是从任意元素开始
                Helper(matrix,i,j,used);
            }
        }
        return max;
    }
}

全部评论

相关推荐

挣K存W养DOG:他真的很中意你,为什么不回他
点赞 评论 收藏
分享
09-27 10:54
重庆大学 C++
人已微死:致敬传奇耐测王。
投递小米集团等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务