网站商品图片尺寸,北京市网站开发,梅州建设项目,广告创意策划给你一个大小为 m x n 的二进制矩阵 grid 。
岛屿 是由一些相邻的 1 (代表土地) 构成的组合#xff0c;这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0#xff08;代表水#xff09;包围着。
岛屿的面积是岛上值为 1 …给你一个大小为 m x n 的二进制矩阵 grid 。
岛屿 是由一些相邻的 1 (代表土地) 构成的组合这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0代表水包围着。
岛屿的面积是岛上值为 1 的单元格的数目。
计算并返回 grid 中最大的岛屿面积。如果没有岛屿则返回面积为 0 。
输入grid [[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 。
输入grid [[0,0,0,0,0,0,0,0]]
输出0
class Solution {public int maxAreaOfIsland(int[][] grid) {int res 0;for (int r 0; r grid.length; r) {for (int c 0; c grid[0].length; c) {if (grid[r][c] 1) {res Math.max(res, dfs(grid, r, c));}}}return res;}private int dfs(int[][] grid, int r, int c) {if (!isGrid(grid, r, c)) {return 0;}if (grid[r][c] 2) {return 0;}if (grid[r][c] 0) {return 0;}grid[r][c] 2;return 1 dfs(grid, r 1, c) dfs(grid, r - 1, c) dfs(grid, r, c 1) dfs(grid, r, c - 1);}// 是否在网格区域内private boolean isGrid(int[][] grid, int r, int c) {return r 0 c 0 r grid.length c grid[0].length;}
}
原题链接力扣
视频讲解链接岛屿最大面积_哔哩哔哩_bilibili