This commit is contained in:
kkunkka
2025-07-14 15:49:19 +08:00
parent 9a3f0b4ac1
commit f0149542a3
2 changed files with 133 additions and 0 deletions

View 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);
}
}

View 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;
}
}