0%

695. 岛屿的最大面积

695. 岛屿的最大面积

dfs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Solution {
public:
int maxAreaOfIsland(vector<vector<int>>& grid) {
int ret = 0;
int m = grid.size(), n = grid[0].size();
for(int i = 0; i < m; ++i)
for(int j = 0; j < n; ++j)
if(grid[i][j] == 1)
ret = max(ret, helper(grid, i, j, m, n));
return ret;
}
private:
int helper(vector<vector<int>>& grid, int i, int j, int m, int n)
{
if(i < 0 || j < 0 || i >= m || j >= n || grid[i][j] != 1)
return 0;
grid[i][j] = -1;
int ret = 1 + helper(grid, i + 1, j, m, n) + helper(grid, i - 1, j, m, n) + helper(grid, i, j + 1, m, n) + helper(grid, i, j - 1, m, n);
return ret;
}
};