文章目录
给你一个大小为 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);
}
}