图论20(Leetcode1254.统计封闭岛屿的数目)
代码:
class Solution {static int[][] dirs = {{1,0},{-1,0},{0,1},{0,-1}};public int closedIsland(int[][] grid) {int num = 0; for(int i=0;i<grid.length;i++){for(int j=0;j<grid[0].length;j++){if(grid[i][j]==0){int[] start = {i,j};if(getIsland(start,grid)){num++;}}}}return num;}private boolean getIsland(int[] start,int[][] grid){boolean flag = true;grid[start[0]][start[1]] = -1;for(int i=0;i<dirs.length;i++){int x = start[0] + dirs[i][0];int y = start[1] + dirs[i][1];if(x<0||x==grid.length||y<0||y==grid[0].length)flag = false;if(x>=0&&x<grid.length&&y>=0&&y<grid[0].length&&grid[x][y]==0){int[] cur = {x,y};if(flag==true){flag = getIsland(cur,grid);}else{getIsland(cur,grid);}}}return flag;}
}