题目

image.png

思路

  • 深度优先+剪枝

    代码

    1. public int maxAreaOfIsland(int[][] grid) {
    2. int res = 0;
    3. for (int i = 0; i < grid.length; i++) {
    4. for (int j = 0; j < grid[0].length; j++) {
    5. if (grid[i][j] == 1)
    6. res = Math.max(res, dfs(grid, i, j));
    7. }
    8. }
    9. return res;
    10. }
    11. public int dfs(int[][] grid, int i, int j) {
    12. if (i < 0 || j < 0 || i >= grid.length || j >= grid[0].length || grid[i][j] == 0)
    13. return 0;
    14. grid[i][j] = 0;
    15. int res = dfs(grid, i - 1, j) + dfs(grid, i, j - 1)
    16. + dfs(grid, i + 1, j) + dfs(grid, i, j + 1) + 1;
    17. return res;
    18. }

    岛屿的最大面积