1254. 统计封闭岛屿的数目
解题思路
- 封闭岛屿就是上下左右全部被1包围的0 也就是靠边的0不算做封闭岛屿
- 首先将上下左右的边界上的岛屿全部变成海洋
- 然后在对剩下的岛屿进行DFS遍历
class Solution {public int closedIsland(int[][] grid) {int m = grid.length;int n = grid[0].length;for(int i = 0; i < n; i++){dfs(grid,0,i);dfs(grid,m - 1,i);}for(int j = 0; j < m; j++){dfs(grid,j,0);dfs(grid,j,n - 1);}int res = 0;for(int i = 0; i < m; i++){for(int j = 0; j < n; j++){if(grid[i][j] == 0){res++;dfs(grid,i,j);}}}return res;}void dfs(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] == 1){return;}if(grid[i][j] == 0){grid[i][j] = 1;}dfs(grid,i + 1,j);dfs(grid,i,j + 1);dfs(grid,i - 1,j);dfs(grid,i,j - 1);}
}