123456789101112131415161718192021222324252627282930313233343536 |
- var detX = []int{1, 0, -1, 0}
- var detY = []int{0, 1, 0, -1}
- func maxAreaOfIsland(grid [][]int) (area int) {
- H := len(grid)
- if H == 0 {
- return
- }
- W := len(grid[0])
- for y := 0; y < H; y++ {
- for x := 0; x < W; x++ {
- area = maxInt(area, dfs(grid, W, H, x, y))
- }
- }
- return
- }
- func dfs(grid [][]int, W, H, x, y int) (area int) {
- if x < 0 || W <= x || y < 0 || H <= y || grid[y][x] == 0 {
- return
- }
- area++
- grid[y][x] = 0
- for i := 0; i < 4; i++ {
- nx, ny := x+detX[i], y+detY[i]
- area += dfs(grid, W, H, nx, ny)
- }
- return
- }
- func maxInt(x, y int) int {
- if x < y {
- return y
- }
- return x
- }
|