kk
This commit is contained in:
53
src/main/java/com/dota/gridGraph/_417/Solution.java
Normal file
53
src/main/java/com/dota/gridGraph/_417/Solution.java
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
package com.dota.gridGraph._417;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
boolean a = false, b = false;
|
||||||
|
|
||||||
|
public List<List<Integer>> pacificAtlantic(int[][] heights) {
|
||||||
|
var book = new boolean[heights.length][heights[0].length];
|
||||||
|
for (int i = 0; i < book.length; i++) {
|
||||||
|
book[i] = new boolean[heights[0].length];
|
||||||
|
}
|
||||||
|
var res = new ArrayList<List<Integer>>();
|
||||||
|
for (int i = 0; i < heights.length; i++) {
|
||||||
|
for (int j = 0; j < heights[i].length; j++) {
|
||||||
|
a = false;
|
||||||
|
b = false;
|
||||||
|
dfs(i, j, heights, book, heights[i][j]);
|
||||||
|
if (a&&b) {
|
||||||
|
res.add(List.of(i,j));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
void dfs(int i, int j, int[][] heights, boolean[][] book, int last) {
|
||||||
|
if (a && b) return;
|
||||||
|
if (i < 0 || j < 0) {
|
||||||
|
a = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (i >= heights.length || j >= heights[0].length) {
|
||||||
|
b = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (book[i][j]) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (heights[i][j] > last) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
book[i][j] = true;
|
||||||
|
dfs(i + 1, j, heights, book, heights[i][j]);
|
||||||
|
dfs(i - 1, j, heights, book, heights[i][j]);
|
||||||
|
dfs(i, j + 1, heights, book, heights[i][j]);
|
||||||
|
dfs(i, j - 1, heights, book, heights[i][j]);
|
||||||
|
book[i][j] = false;
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user