695. 岛屿的最大面积(适合 初学者 理解的java版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);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_44627608/article/details/123501828
今日推荐