classSolution{publicintcountSubIslands(int[][] grid1,int[][] grid2){int m = grid1.length;int n = grid1[0].length;for(int i =0; i < m; i++){for(int j =0; j < n; j++){// 如果两个岛屿的点不一样 说明grid2这个岛屿一定不是子岛屿if(grid1[i][j]==0&& grid2[i][j]==1){// 淹没 i j 以及相邻的土地dfs(grid2,i,j);}}}int res =0;// 现在grid2 剩下的岛屿 全部都是子岛屿 计算岛屿的数量for(int i =0; i < m; i++){for(int j =0; j < n; j++){if(grid2[i][j]==1){
res++;dfs(grid2,i,j);}}}return res;}// DFSvoiddfs(int[][] grid,int i,int j){int m = grid.length;int n = grid[0].length;if(i <0|| j <0|| i >= m || j >= n){return;}// 遇到海水if(grid[i][j]==0){return;}
grid[i][j]=0;dfs(grid,i +1,j);dfs(grid, i -1,j);dfs(grid,i ,j +1);dfs(grid,i,j-1);}}