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 }