解答
class Solution {
public int maxAreaOfIsland(int[][] grid) {
if (grid == null || grid.length == 0 || grid[0] == null || grid[0].length == 0) {
return 0;
}
int m = grid.length;
int n = grid[0].length;
int area = 0;
for (int i = 0; i < m; ++i) {
for (int j = 0; j < n; ++j) {
if (grid[i][j] == 1) {
int value = area(grid, i, j);
area = Math.max(area, value);
}
}
}
return area;
}
int area(int[][] grid, int i, int j) {
int m = grid.length;
int n = grid[0].length;
if (i < 0 || j < 0 || i >= m || j >= n) {
return 0;
}
if (grid[i][j] == 0) {
return 0;
}
int count = 1;
grid[i][j] = 0;
count += area(grid, i + 1, j);
count += area(grid, i - 1, j);
count += area(grid, i, j + 1);
count += area(grid, i, j - 1);
return count;
}
}
总结
遍历地图的同时,把访问过的格子的数量记录下来。