> 文档中心 > 695. 岛屿的最大面积(适合 初学者 理解的java版BFS)

695. 岛屿的最大面积(适合 初学者 理解的java版BFS)

文章目录

  • BFS

给你一个大小为 m x n 的二进制矩阵 grid 。

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

岛屿的面积是岛上值为 1 的单元格的数目。

计算并返回 grid 中最大的岛屿面积。如果没有岛屿,则返回面积为 0 。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/max-area-of-island
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
在这里插入图片描述
在这里插入图片描述


BFS

广度预先搜索(BFS),与DFS(深度优先搜索)不同的是BFS是先广度后深度,DFS是先深度后广度

在这里插入图片描述

class Solution {    public static int max=0;    public static int count=0;    public int maxAreaOfIsland(int[][] nums) { max=0; count=0; for(int i=0;i<nums.length;++i){     for(int j=0;j<nums[0].length;++j){  if(nums[i][j]!=0)  fun(i,j,nums);  max = max>count ? max :count ;  count=0;     } } return max;    }    public static void fun(int i,int j,int[][] nums){  if(nums[i][j]!=0) count++; nums[i][j]=0; if(i+1<nums.length && nums[i+1][j]!=0)     fun(i+1,j,nums); if(i-1>-1 && nums[i-1][j]!=0)     fun(i-1,j,nums); if(j+1<nums[0].length && nums[i][j+1]!=0)     fun(i,j+1,nums); if(j-1>-1 && nums[i][j-1]!=0)     fun(i,j-1,nums);    }}