1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
| class Solution { private int ans = 0;
public int maxAreaOfIsland(int[][] grid) { int m = grid.length, n = grid[0].length; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (grid[i][j] == 1) { dfs(grid, i, j); } } } return ans; }
private int dfs(int[][] grid, int x, int y) { int m = grid.length, n = grid[0].length; if (x >= m || x < 0 || y >= n || y < 0 || grid[x][y] == -1 || grid[x][y] == 0) { return 0; } grid[x][y] = -1; int ret = dfs(grid, x+1, y) + dfs(grid, x-1, y) + dfs(grid, x, y+1) + dfs(grid, x, y-1) + 1; ans = Math.max(ans, ret); return ret; } }
|