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; } };
|