golang
func maxAreaOfIsland(grid [][]int) int {
res := 0
for x := range grid {
for y := range grid[x] {
m := maxArea(&grid, x, y)
if m > res {
res = m
}
}
}
return res
}
func maxArea(g *[][]int, x int, y int) int {
if x < 0 || y < 0 || x >= len(*g) || y >= len((*g)[x]) {
return 0
}
t := (*g)[x][y]
(*g)[x][y] = -1
if t == 0 || t == -1 {
return 0
}
return 1 + maxArea(g, x+1, y) + maxArea(g, x-1, y) + maxArea(g, x, y+1) + maxArea(g, x, y-1)
}