695. 岛屿的最大面积

灰太狼 2022-10-08 05:44 250阅读 0赞

给定一个包含了一些 0 和 1 的非空二维数组 grid 。

一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0(代表水)包围着。

找到给定的二维数组中最大的岛屿面积。(如果没有岛屿,则返回面积为 0 。)

示例 1:

[[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]]
对于上面这个给定矩阵应返回 6。注意答案不应该是 11 ,因为岛屿只能包含水平或垂直的四个方向的 1 。

示例 2:

[[0,0,0,0,0,0,0,0]]

  1. class Solution {
  2. public int maxAreaOfIsland(int[][] grid) {
  3. /**
  4. dfs做法还是
  5. */
  6. int res=0;
  7. for(int i=0;i<grid.length;i++){
  8. for(int j=0;j<grid[0].length;j++){
  9. if(grid[i][j]==1){
  10. res=Math.max(res,dfs(grid,i,j));
  11. }
  12. }
  13. }
  14. return res;
  15. }
  16. public int dfs(int[][] grid,int row,int col){
  17. if(col<0||row<0||row>=grid.length||col>=grid[0].length||grid[row][col]==0){
  18. return 0;
  19. }
  20. grid[row][col]=0;
  21. int num=1;
  22. num+=dfs(grid,row+1,col);
  23. num+=dfs(grid,row-1,col);
  24. num+=dfs(grid,row,col-1);
  25. num+= dfs(grid,row,col+1);
  26. return num;
  27. }
  28. }

发表评论

表情:
评论列表 (有 0 条评论,250人围观)

还没有评论,来说两句吧...

相关阅读

    相关 695. 岛屿面积

    > 给定一个包含了一些 0 和 1 的非空二维数组 grid 。 > > 一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在水平或者

    相关 695. 岛屿面积

    给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合。你可以假设二维矩阵的四个边缘都被水包围着