Skip to content

Commit 6c99a07

Browse files
authored
Create 329. Longest Increasing Path in a Matrix
1 parent ccedc64 commit 6c99a07

File tree

1 file changed

+31
-0
lines changed

1 file changed

+31
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
class Solution {
2+
int[][] dir = {{1,0}, {-1,0}, {0,1}, {0,-1}};
3+
public int longestIncreasingPath(int[][] matrix) {
4+
if(matrix == null || matrix.length == 0) return 0;
5+
int m = matrix.length, n = matrix[0].length;
6+
int[][] mem = new int[m][n];
7+
int longestPath = 0;
8+
9+
for(int i = 0; i < m; i++) {
10+
for(int j = 0; j < n; j++) {
11+
int path = dfs(matrix, m, n, i, j, mem);
12+
longestPath = Math.max(path, longestPath);
13+
}
14+
}
15+
16+
return longestPath;
17+
}
18+
19+
public int dfs(int[][] matrix, int m, int n, int i, int j, int[][] mem) {
20+
if(mem[i][j] > 0) return mem[i][j];
21+
int max = 0;
22+
for(int[] d : dir) {
23+
int x = i+d[0], y = j+d[1];
24+
if(x >= 0 && y >= 0 && x < m && y < n && matrix[x][y] > matrix[i][j]) {
25+
max = Math.max(max, dfs(matrix, m, n, x, y, mem));
26+
}
27+
}
28+
mem[i][j] = max+1;
29+
return max+1;
30+
}
31+
}

0 commit comments

Comments
 (0)