kk
This commit is contained in:
28
src/main/java/com/dota/gridGraph/_1020/Solution.java
Normal file
28
src/main/java/com/dota/gridGraph/_1020/Solution.java
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
package com.dota.gridGraph._1020;
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
public int numEnclaves(int[][] grid) {
|
||||||
|
var res = 0;
|
||||||
|
for (int i = 0; i < grid.length; i++) {
|
||||||
|
for (int j = 0; j < grid[i].length; j++) {
|
||||||
|
if (i==0||j==0||i==grid.length-1||j==grid[i].length-1) dfs(i, j, grid);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int[] ints : grid) {
|
||||||
|
for (int anInt : ints) {
|
||||||
|
res += anInt;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
void dfs(int i, int j, int[][] grid) {
|
||||||
|
if (i<0||j<0||i>=grid.length||j>=grid[0].length||grid[i][j]==0) return;
|
||||||
|
grid[i][j] = 0;
|
||||||
|
dfs(i+1, j, grid);
|
||||||
|
dfs(i-1, j, grid);
|
||||||
|
dfs(i, j+1, grid);
|
||||||
|
dfs(i, j-1, grid);
|
||||||
|
}
|
||||||
|
}
|
105
src/main/java/com/dota/gridGraph/_1391/Solution.java
Normal file
105
src/main/java/com/dota/gridGraph/_1391/Solution.java
Normal file
@@ -0,0 +1,105 @@
|
|||||||
|
package com.dota.gridGraph._1391;
|
||||||
|
|
||||||
|
class Solution {
|
||||||
|
|
||||||
|
public boolean hasValidPath(int[][] grid) {
|
||||||
|
if (grid.length == 1 && grid[0].length == 1) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (grid[0][0] == 4) {
|
||||||
|
return dfs(1, 0, grid, 2) || dfs(0, 1, grid, 4);
|
||||||
|
}
|
||||||
|
if (grid[0][0] == 1) {
|
||||||
|
return dfs(0, 1, grid, 4);
|
||||||
|
}
|
||||||
|
if (grid[0][0] == 2) {
|
||||||
|
return dfs(1, 0, grid, 2);
|
||||||
|
}
|
||||||
|
if (grid[0][0] == 3) {
|
||||||
|
return dfs(1, 0, grid, 2);
|
||||||
|
}
|
||||||
|
if (grid[0][0] == 6) {
|
||||||
|
return dfs(0, 1, grid, 4);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// last 1 上 2下 3左 4右边
|
||||||
|
boolean dfs(int i, int j, int[][] grid, int last) {
|
||||||
|
if (i < 0 || i >= grid.length || j < 0 || j >= grid[0].length) return false;
|
||||||
|
if (grid[i][j] == 0) return false;
|
||||||
|
int t = grid[i][j];
|
||||||
|
grid[i][j] = 0;
|
||||||
|
var flag = false;
|
||||||
|
if (t == 1) {
|
||||||
|
if (last == 3) {
|
||||||
|
if (i == grid.length - 1 && j == grid[0].length - 1) flag = true;
|
||||||
|
else flag = dfs(i, j - 1, grid, last);
|
||||||
|
}
|
||||||
|
if (last == 4) {
|
||||||
|
if (i == grid.length - 1 && j == grid[0].length - 1) flag = true;
|
||||||
|
else flag = dfs(i, j + 1, grid, last);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (t == 2) {
|
||||||
|
if (last == 1) {
|
||||||
|
if (i == grid.length - 1 && j == grid[0].length - 1) flag = true;
|
||||||
|
else flag = dfs(i - 1, j, grid, last);
|
||||||
|
}
|
||||||
|
if (last == 2) {
|
||||||
|
if (i == grid.length - 1 && j == grid[0].length - 1) flag = true;
|
||||||
|
else flag = dfs(i + 1, j, grid, last);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (t == 3) {
|
||||||
|
if (last == 4) {
|
||||||
|
if (i == grid.length - 1 && j == grid[0].length - 1) flag = true;
|
||||||
|
else flag = dfs(i + 1, j, grid, 2);
|
||||||
|
}
|
||||||
|
if (last == 1) {
|
||||||
|
if (i == grid.length - 1 && j == grid[0].length - 1) flag = true;
|
||||||
|
else flag = dfs(i, j - 1, grid, 3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (t == 4) {
|
||||||
|
if (last == 1) {
|
||||||
|
if (i == grid.length - 1 && j == grid[0].length - 1) flag = true;
|
||||||
|
else flag = dfs(i, j + 1, grid, 4);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (last == 3) {
|
||||||
|
if (i == grid.length - 1 && j == grid[0].length - 1) flag= true;
|
||||||
|
else flag= dfs(i + 1, j, grid, 2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (t == 5) {
|
||||||
|
if (last == 2) {
|
||||||
|
if (i == grid.length - 1 && j == grid[0].length - 1) flag= true;
|
||||||
|
else flag= dfs(i, j - 1, grid, 3);
|
||||||
|
}
|
||||||
|
if (last == 4) {
|
||||||
|
if (i == grid.length - 1 && j == grid[0].length - 1) flag= true;
|
||||||
|
else flag= dfs(i - 1, j, grid, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (t == 6) {
|
||||||
|
if (last == 2) {
|
||||||
|
if (i == grid.length - 1 && j == grid[0].length - 1) flag= true;
|
||||||
|
else flag= dfs(i, j + 1, grid, 4);
|
||||||
|
}
|
||||||
|
if (last == 3) {
|
||||||
|
if (i == grid.length - 1 && j == grid[0].length - 1) flag= true;
|
||||||
|
else flag= dfs(i - 1, j, grid, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
grid[i][j] = t;
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user