Given a 2D grid consists of 0s (land) and 1s (water). An island is a maximal 4-directionally connected group of 0s and a closed island is an island totally (all left, top, right, bottom) surrounded by 1s.
Return the number of closed islands.
Example 1:
Input: grid = [[1,1,1,1,1,1,1,0],[1,0,0,0,0,1,1,0],[1,0,1,0,1,1,1,0],[1,0,0,0,0,1,0,1],[1,1,1,1,1,1,1,0]]
Output:
2
Explanation:
Islands in gray are closed because they are completely surrounded by water (group of 1s).
funcclosedIsland(grid [][]int) int { res :=0for i :=0; i <len(grid); i++ {for j :=0; j <len(grid[0]); j++ {if grid[i][j] ==0 {ifdfs(grid, i, j) { res++ } } } }return res}funcdfs(grid [][]int, x int, y int) bool {if x <0|| y <0|| x ==len(grid) || y ==len(grid[0]) {returnfalse }if grid[x][y] ==1 { returntrue } grid[x][y] =1 right :=dfs(grid, x +1, y) left :=dfs(grid, x -1, y) up :=dfs(grid, x, y +1) down :=dfs(grid, x, y -1)return right && left && up && down}