河南自助建站seo公司,廊坊电子商务网站建设,今天的热点新闻,购物网站优惠券怎么做给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合#xff0c;这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0#xff08;代表水#xff09;包围着。找到给定的二维数组中最大…给定一个包含了一些 0 和 1 的非空二维数组 grid 。一个 岛屿 是由一些相邻的 1 (代表土地) 构成的组合这里的「相邻」要求两个 1 必须在水平或者竖直方向上相邻。你可以假设 grid 的四个边缘都被 0代表水包围着。找到给定的二维数组中最大的岛屿面积。(如果没有岛屿则返回面积为 0 。)示例 1:[[0,0,1,0,0,0,0,1,0,0,0,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,1,1,0,1,0,0,0,0,0,0,0,0],[0,1,0,0,1,1,0,0,1,0,1,0,0],[0,1,0,0,1,1,0,0,1,1,1,0,0],[0,0,0,0,0,0,0,0,0,0,1,0,0],[0,0,0,0,0,0,0,1,1,1,0,0,0],[0,0,0,0,0,0,0,1,1,0,0,0,0]]
对于上面这个给定矩阵应返回 6。注意答案不应该是 11 因为岛屿只能包含水平或垂直的四个方向的 1 。
class Solution {public int maxAreaOfIsland(int[][] grid) {int res0;int[][] dirnew int[][]{{-1,0},{1,0},{0,1},{0,-1}};for(int i0;igrid.length;i)for(int j0;jgrid[0].length;j)if(grid[i][j]1)res Math.max(pond(grid,dir,i,j),res);return res;}public int pond(int[][] land,int[][] dir,int x,int y) {if(x0||yland[0].length||y0||xland.length||land[x][y]0)return 0;int sum1;land[x][y]0;for(int[] d:dir){int nextXd[0]x,nextYd[1]y;sumpond(land,dir,nextX,nextY);}return sum;}
}