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 31 32
| class Solution { public: int maxAreaOfIsland(vector<vector<int>>& grid) { if (grid.empty() || grid[0].empty()) return 0; int dc[] = {0, 0, -1, 1}, dr[] = {-1, 1, 0, 0}; int n = grid.size(), m = grid[0].size(); int res = 0; for (int r = 0; r < n; ++r) { for (int c = 0; c < m; ++c) { res = max(res, bfs(grid, r, c, dr, dc, n, m)); } } return res; }
int bfs(vector<vector<int>> &grid, int r, int c, int dr[], int dc[], int n, int m) { queue<pair<int, int>> q; q.emplace(r, c); int res = 0; while (!q.empty()) { auto [r, c] = q.front(); q.pop(); if (0 <= r && r < n && 0 <= c && c < m && grid[r][c]) { ++res; grid[r][c] = 0; for (int i = 0; i < 4; ++i) { q.emplace(r + dr[i], c + dc[i]); } } } return res; } };
|