0695. Max Area of Island
Last updated
Last updated
**Input:** 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]]
**Output:** 6
**Explanation:** The answer is not 11, because the island must be connected 4-directionally.**Input:** grid = [[0,0,0,0,0,0,0,0]]
**Output:** 0class Solution {
int cnt = 0;
int max = 0;
public int maxAreaOfIsland(int[][] grid) {
// edge cases
if (grid.length == 0 || grid[0].length == 0) {
return 0;
}
for (int r = 0; r < grid.length; r++) {
for (int c = 0; c < grid[0].length; c++) {
if (grid[r][c] == 1) {
cnt = 0;
helper(grid, r, c);
}
}
}
return max;
}
private void helper(int[][] grid, int r, int c) {
// exit
if (r < 0 || r >= grid.length || c < 0 || c >= grid[0].length
|| grid[r][c] == 0) {
return;
}
grid[r][c] = 0; // mark visted
cnt++;
max = Math.max(max, cnt);
// check neighbors
helper(grid, r+1, c);
helper(grid, r-1, c);
helper(grid, r, c+1);
helper(grid, r, c-1);
}
}