最大岛屿面积
题目
Given a non-empty 2D array grid of 0’s and 1’s, an island is a group of 1’s (representing land) connected 4-directionally (horizontal or vertical.) You may assume all four edges of the grid are surrounded by water.
Find the maximum area of an island in the given 2D array. (If there is no island, the maximum area is 0.)
Example 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]]
Given the above grid, return 6. Note the answer is not 11, because the island must be connected 4-directionally.
Example 2:
[[0,0,0,0,0,0,0,0]]
Given the above grid, return 0.
Note: The length of each dimension in the given grid does not exceed 50.
解析重点
1.当遇到岛屿时我们要怎么计算岛屿面积呢?递归从四个方向计算面积,当遇到0时终止递归。注意,当递归到地图边界时也需要终止递归计算。
2.当一个岛屿我们从不同位置开始计算时,会出现重复计算的情况,我们可以把搜索过的位置置为0,后续就不会再计算了。
3.多个岛屿求最大面积,我们只需要保存最大值,然后每次碰到岛屿与之比较即可。
java代码
1 | class Solution { |