class Solution {
public:
int maxAreaOfIsland(vector<vector<int>>& grid) {
int area = 0;
for(int i = 0; i < grid.size(); i++) {
for(int j = 0; j < grid[i].size(); j++) {
if (grid[i][j] != 0) {
area = max(area, areaOfIsland(grid, i, j));
}
}
}
return area;
}
int areaOfIsland(vector<vector<int>>& grid, int i, int j) {
if (i >= 0 && i < grid.size() && j >= 0 && j < grid[i].size() && grid[i][j] != 0) {
grid[i][j] = 0;
return 1 + areaOfIsland(grid, i+1, j) + areaOfIsland(grid, i-1, j) +
areaOfIsland(grid, i, j+1) + areaOfIsland(grid, i, j-1);
}
return 0;
}
};