手机网站开发设计包括什么,wordpress 360网盘按钮,黄骗免费网站,东莞做网站的公司1020. 飞地的数量
解题思路
将靠边的陆地全部使用海水淹没 然后计算封闭的陆地面积使用Dfs将边界的陆地进行淹没#xff0c;不能简单的置为1#xff0c;因为边界的陆地和内部的陆地相连通#xff0c;这种情况也需淹没最后统计剩下的陆地
class Solution {public int numE…1020. 飞地的数量
解题思路
将靠边的陆地全部使用海水淹没 然后计算封闭的陆地面积使用Dfs将边界的陆地进行淹没不能简单的置为1因为边界的陆地和内部的陆地相连通这种情况也需淹没最后统计剩下的陆地
class Solution {public int numEnclaves(int[][] grid) {// 将靠边的陆地全部用海水淹没 然后计算封闭的陆地面积int m grid.length;int n grid[0].length;for(int j 0; j n; j){// 将上下的所有陆地全部淹没DFS(grid,0,j);DFS(grid,m - 1,j);}// 将左右的所有陆地全部淹没for(int i 0; i m; i){DFS(grid,i,0);DFS(grid,i,n - 1);}// 上面两个循环的作用在于 将所有的靠边的陆地全部淹没// 包括 和靠边联通的陆地int res 0;for(int i 0; i m; i){for(int j 0; j n; j){if(grid[i][j] 1){res;// DFS(grid,i,j);}}}return res;}// DFSvoid 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] 0){return;}// 将陆地变为海水grid[i][j] 0;DFS(grid,i 1,j);DFS(grid,i -1,j);DFS(grid,i, j1);DFS(grid,i,j -1);}
}