diff options
Diffstat (limited to 'max_area_island.cpp')
-rw-r--r-- | max_area_island.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/max_area_island.cpp b/max_area_island.cpp new file mode 100644 index 0000000..aad8b2d --- /dev/null +++ b/max_area_island.cpp @@ -0,0 +1,24 @@ +#include "leetcode.h" + +class Solution { +public: + int maxAreaOfIsland(vector<vector<int>> &grid) { + int ans = 0; + n = grid.size(), m = grid[0].size(); + for (int i = 0; i < n; i++) + for (int j = 0; j < m; j++) + if (grid[i][j]) + ans = max(ans, helper(i, j, grid)); + return ans; + } + +private: + int n = 0, m = 0; + int helper(int i, int j, vector<vector<int>> &grid) { + if (i < 0 || j < 0 || i >= n || j >= m || !grid[i][j]) + return 0; + grid[i][j] = 0; + return 1 + helper(i - 1, j, grid) + helper(i, j - 1, grid) + + helper(i + 1, j, grid) + helper(i, j + 1, grid); + } +}; |