不准访问
- 积分
- 123
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2013-12-16
- 最后登录
- 1970-1-1
|
- public class Solution {
- private int[] dx = {-1, 1, 0, 0};
- private int[] dy = {0, 0, -1, 1};
- public int longestIncreasingPath(int[][] matrix) {
- if(matrix == null || matrix.length == 0 || matrix[0].length == 0) {
- return 0;
- }
- int max = 0;
- int[][] dp = 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, dp));
- }
- }
- return max;
- }
- private int dfs(int[][] matrix, int i, int j, int[][] dp) {
- if(dp[i][j] != 0) {
- return dp[i][j];
- }
- for(int k = 0; k < 4; k++) {
- int x = i + dx[k];
- int y = j + dy[k];
- if(x >= 0 && x < matrix.length && y >= 0 && y < matrix[0].length && matrix[i][j] < matrix[x][y]) {
- dp[i][j] = Math.max(dp[i][j], dfs(matrix, x, y, dp));
- }
- }
- return ++dp[i][j];
- }
- }
复制代码 |
|