一、leetcode695. 岛屿的最大面积
给你一个大小为 m x n 的二进制矩阵 grid 。
岛屿 是由一些相邻的 1 (代表土地) 构成的组合,这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid
的四个边缘都被 0(代表水)包围着。
岛屿的面积是岛上值为 1 的单元格的数目。
计算并返回 grid 中最大的岛屿面积。如果没有岛屿,则返回面积为 0 。
这里用到了dfs深度优先搜索,从某一个开始,向四周进行搜索,超过边界和值为0的返回,并将数过的值重新设定,以防二次计数。
class Solution { public int maxAreaOfIsland(int[][] grid) { //image int count = 0; for (int i = 0; i < grid.length; i++) { for (int j = 0; j < grid[0].length; j++) { count = Math.max(count, dfs(grid, i, j)); } } return count; } private int dfs(int[][] grid,int m ,int n) { int count= 1; if(m>=grid.length || m<0|| n>=grid[0].length||n<0 || grid[m][n] ==0 ){ return 0 ; } grid[m][n] = 0; int a [] ={0,1,-1,0}; int b [] ={1,0,0,-1}; for(int i = 0;i<4;i++){ int next_i = m+a[i],next_j = n+b[i]; count += dfs(grid,next_i,next_j); } return count; } }