给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量。一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的。你可以假设网格的四个边均被水包围。
示例 1:
输入:
11110
11010
11000
00000
输出: 1
示例 2:
输入:
11000
11000
00100
00011
输出: 3
func numIslands(grid [][]byte) int {
if len(grid) <= 0 || len(grid[0]) <= 0 {
return 0
}
result:=0
for i := 0; i < len(grid); i++ {
for j := 0; j < len(grid[0]); j++ {
if grid[i][j] == '1' {
result++
DFS(grid, i, j)
}
}
}
return result
}
func DFS(grid [][]byte, x int, y int) {
grid[x][y] = '0'
if x > 0 && grid[x-1][y] == '1' {
DFS(grid, x-1, y)
}
if x < len(grid)-1 && grid[x+1][y] == '1' {
DFS(grid, x+1, y)
}
if y > 0 && grid[x][y-1] == '1' {
DFS(grid, x, y-1)
}
if y < len(grid[0])-1 && grid[x][y+1] == '1' {
DFS(grid, x, y+1)
}
}