This commit is contained in:
kkunkka
2025-07-11 10:15:20 +08:00
parent 6796eda7e5
commit 9a3f0b4ac1
2 changed files with 78 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
package com.dota.gridGraph._1905;
class Solution {
public int countSubIslands(int[][] grid1, int[][] grid2) {
int res = 0;
for (int i = 0; i < grid1.length; i++) {
for (int j = 0; j < grid1[i].length; j++) {
if (grid2[i][j]==1 && dfs(grid1, grid2, i, j)) res++;
}
}
return res;
}
boolean dfs(int[][] grid1, int[][] grid2, int row, int col) {
if (row < 0 || row >= grid1.length || col < 0 || col >= grid2[0].length) return true;
if (grid2[row][col] == 2 || grid2[row][col]==0) return true;
grid2[row][col] = 2;
return grid1[row][col] == 1 &
dfs(grid1, grid2, row + 1, col) &
dfs(grid1, grid2, row - 1, col) &
dfs(grid1, grid2, row, col + 1) &
dfs(grid1, grid2, row, col - 1);
}
}

View File

@@ -0,0 +1,54 @@
package com.dota.gridGraph._2684;
class Solution {
int[][] grid;
public static void main(String[] args) {
new Solution().maxMoves(new int[][]{ {3, 2, 4}, {2, 1, 9}, {1, 1, 7} });
}
public int maxMoves(int[][] grid) {
this.grid = grid;
int n = grid.length;
int m = grid[0].length;
var dp = new int[n][m];
int max = 0;
for (int i = 0; i < n; i++) {
if (get(i - 1, 0) < grid[i][1] || grid[i][0] < grid[i][1] || get(i + 1, 0) < grid[i][1]) {
dp[i][1] = 1;
max = 1;
}
}
for (int j = 2; j < m; j++) {
for (int i = 0; i < n; i++) {
if (grid[i][j - 1] < grid[i][j] && dp[i][j - 1] > 0) {
dp[i][j] = Math.max(dp[i][j], dp[i][j - 1]);
}
if (get(i + 1, j - 1) < grid[i][j] && dp[i + 1][j - 1] > 0) {
dp[i][j] = Math.max(dp[i][j], dp[i + 1][j - 1]);
}
if (get(i - 1, j - 1) < grid[i][j] && dp[i - 1][j - 1] > 0) {
dp[i][j] = Math.max(dp[i][j], dp[i - 1][j - 1]);
}
if (dp[i][j] > 0) {
dp[i][j]++;
}
max = Math.max(dp[i][j], max);
}
}
return max;
}
int get(int i, int j) {
if (i < 0 || j < 0 || i >= grid.length || j >= grid[0].length) {
return Integer.MAX_VALUE;
}
return grid[i][j];
}
}