1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| class Solution { public: int dfs(vector<vector<int>>& grid, int idx1, int idx2, vector<vector<bool>>& visited){ if(idx1 < 0 || idx1 >= grid.size() || idx2 < 0 || idx2 >= grid[0].size()){ return 0; } if(visited[idx1][idx2] || grid[idx1][idx2] == 0) return 0; visited[idx1][idx2] = true; return dfs(grid, idx1 - 1, idx2, visited) + dfs(grid, idx1 + 1, idx2, visited) + dfs(grid, idx1, idx2 - 1, visited) + dfs(grid, idx1, idx2 + 1, visited) + 1; } int maxAreaOfIsland(vector<vector<int>>& grid) { vector<vector<bool>> visited; for(int i = 0; i < grid.size(); i++){ vector<bool> tmp(grid[0].size(), false); visited.push_back(tmp); } int maxArea = 0; for(int i = 0; i < grid.size(); i++){ for(int j = 0; j < grid[0].size(); j++){ maxArea = max(maxArea, dfs(grid, i, j, visited)); } } return maxArea; } };
|