帮朋友做网站的坑,电子商务考研可以考什么专业,一元钱购买网站空间,凡科互动是什么题目
给你一个大小为 m x n 的二进制矩阵 grid 。
岛屿 是由一些相邻的 1 (代表土地) 构成的组合#xff0c;这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0#xff08;代表水#xff09;包围着。
岛屿的面积是岛上值…题目
给你一个大小为 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 。
示例
这道题和上一道求岛屿数量的题目在思想上都是一样的就是通过dfs来遍历到每个岛屿同时计算出它的面积来维护一个面积的最大值即可
func maxAreaOfIsland(grid [][]int) int {var dfs func(grid [][]int, i, j int) intdfs func(grid [][]int, i, j int) int {if i 0 || j 0 || i len(grid) || j len(grid[0]) || grid[i][j] 0 {return 0}area : 1grid[i][j] 0area dfs(grid, i1, j)area dfs(grid, i-1, j)area dfs(grid, i, j1)area dfs(grid, i, j-1)return area}maxArea : 0for i : 0; i len(grid); i {for j : 0; j len(grid[0]); j {if grid[i][j] 1 {maxArea max(maxArea, dfs(grid, i, j))}}}return maxArea
}