题目:
代码(首刷自解 2024年3月18日):
class Solution {
public:
int dir[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
int result;
int count;
void dfs(vector<vector<int>>& grid, int row, int col)
{
if (count > result)
result = count;
for (int i = 0; i < 4; ++i)
{
int newrow = row + dir[i][0];
int newcol = col + dir[i][1];
if (newrow >= 0 && newrow < grid.size() && newcol >= 0
&& newcol < grid[0].size() && grid[newrow][newcol] == 1)
{
count++;
grid[newrow][newcol] = -1;
dfs(grid, newrow, newcol);
}
}
}
int maxAreaOfIsland(vector<vector<int>>& grid) {
result = 0;
int m = grid.size();
int n = grid[0].size();
for (int i = 0; i < m; ++i)
{
for (int j = 0; j < n; ++j)
{
if (grid[i][j] == 1)
{
count = 1;
grid[i][j] = -1;
dfs(grid, i, j);
}
}
}
return result;
}
};