1. 给你一个大小为 m x n 的二进制矩阵 grid
    2. 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。
    3. 岛屿的面积是岛上值为 1 的单元格的数目。
    4. 计算并返回 grid 中最大的岛屿面积。如果没有岛屿,则返回面积为 0
    5. 示例 1
    6. 输入:grid =
    7. [[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0,1,1,0,0,1,0,1,0,0],[0,1,0,0,1,1,0,0,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,0,0,0,0,0,0,1,1,0,0,0,0]]
    8. 输出:6
    9. 解释:答案不应该是 11 ,因为岛屿只能包含水平或垂直这四个方向上的 1
    1. class Solution {
    2. private int max;
    3. public int maxAreaOfIsland(int[][] grid) {
    4. if(grid.length == 0 || grid == null) return 0;
    5. for(int x = 0; x < grid.length; x++){
    6. for(int y = 0; y < grid[0].length; y++){
    7. if(grid[x][y] == 1){
    8. max = Math.max(dfs(grid, x, y),max);
    9. }
    10. }
    11. }
    12. return max;
    13. }
    14. public int dfs(int[][] grid,int x,int y){
    15. if(x >= grid.length || x < 0 || y >= grid[0].length || y < 0
    16. || grid[x][y] == 0) return 0;
    17. grid[x][y] = 0;
    18. return dfs(grid, x, y+1) + dfs(grid, x, y-1) +
    19. dfs(grid, x+1, y) + dfs(grid, x-1, y) + 1;
    20. }
    21. }