一、题目内容

image.png

二、题解

解法1:

思路

代码

  1. public class Solution {
  2. private int maxans = 0;
  3. public int solve (int[][] matrix) {
  4. // write code here
  5. if (matrix == null || matrix.length == 0 || matrix.length == 0) {
  6. return 0;
  7. }
  8. int rows = matrix.length;
  9. int cols = matrix[0].length;
  10. int[][] visited = new int[rows][cols];
  11. for (int i = 0; i < rows; i++) {
  12. for (int j = 0; j < cols; j++) {
  13. recur(matrix, visited, i, j, -1, 0);
  14. }
  15. }
  16. return maxans;
  17. }
  18. private void recur(int[][] matrix, int[][] visited, int i, int j, int cur, int step){
  19. if (i < 0 || i > matrix.length - 1 || j < 0 || j > matrix[0].length - 1 ||
  20. visited[i][j] == 1 || cur >= matrix[i][j]) {
  21. return;
  22. }
  23. step++;
  24. maxans = Math.max(maxans,step);
  25. visited[i][j] = 1;
  26. recur(matrix,visited,i-1,j,matrix[i][j],step);
  27. recur(matrix,visited,i,j-1,matrix[i][j],step);
  28. recur(matrix,visited,i+1,j,matrix[i][j],step);
  29. recur(matrix,visited,i,j+1,matrix[i][j],step);
  30. visited[i][j] = 0;
  31. }
  32. }