您的位置:首页 > 其它

[LeetCode]329. Longest Increasing Path in a Matrix

2017-03-03 19:28 267 查看
https://leetcode.com/problems/longest-increasing-path-in-a-matrix/?tab=Description

找到二维数组里面的最长递增序列的长度

注意用cache保存下来已经得到的状态

public class Solution {
public int longestIncreasingPath(int[][] matrix) {
if (matrix == null || matrix.length == 0) {
return 0;
}
int max = 0;
int[][] cache = new int[matrix.length][matrix[0].length];
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[0].length; j++) {
max = Math.max(max, dfs(matrix, i, j, cache));
}
}
return max;
}
int[][] dirs = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
private int dfs(int[][] matrix, int row, int col, int[][] cache) {
if (cache[row][col] != 0) {
return cache[row][col];
}
int res = 0;
for (int[] dir : dirs) {
int i = row + dir[0];
int j = col + dir[1];
if (i < 0 || i >= matrix.length || j < 0 || j >= matrix[0].length || matrix[i][j] >= matrix[row][col]) {
continue;
}
res = Math.max(res, dfs(matrix, i, j, cache));
}
cache[row][col] = res + 1;
return res + 1;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: