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); }}