31 lines
513 B
Go
31 lines
513 B
Go
package q200
|
|
|
|
const (
|
|
VISITED byte = '.'
|
|
LAND byte = '1'
|
|
)
|
|
|
|
func traverse(grid [][]byte, x, y int) int {
|
|
if x < 0 || y < 0 || x >= len(grid[0]) || y >= len(grid) || grid[y][x] != LAND {
|
|
return 0
|
|
}
|
|
|
|
grid[y][x] = VISITED
|
|
traverse(grid, x+1, y)
|
|
traverse(grid, x-1, y)
|
|
traverse(grid, x, y+1)
|
|
traverse(grid, x, y-1)
|
|
return 1
|
|
}
|
|
|
|
func numIslands(grid [][]byte) int {
|
|
count := 0
|
|
for y := range grid {
|
|
for x := range grid[y] {
|
|
count += traverse(grid, x, y)
|
|
}
|
|
}
|
|
return count
|
|
}
|
|
|
|
var _ = numIslands
|