Untitled
unknown
plain_text
a year ago
1.3 kB
3
Indexable
class Solution { public: int dx[4] = {-1, 0, 1, 0}; int dy[4] = {0, 1, 0, -1}; bool bfs(int i, int j, vector<vector<int>>& grid2, vector<vector<int>> &grid1){ queue<pair<int, int>> q; int m = grid1.size(); int n = grid1[0].size(); q.push({i,j}); grid2[i][j] = 0; bool flag = true; while(!q.empty()){ auto point = q.front(); q.pop(); int x = point.first; int y = point.second; for(int k=0;k<4;k++){ int xx = x + dx[k]; int yy = y + dy[k]; if(xx>=0 && xx<m && yy>=0 && yy<n && grid2[xx][yy]==1){ if(grid1[xx][yy]==0 && flag==true) flag = false; grid2[xx][yy] = 0; q.push({xx,yy}); } } } return flag; } int countSubIslands(vector<vector<int>>& grid1, vector<vector<int>>& grid2) { int m = grid1.size(); int n = grid1[0].size(); int count = 0; for(int i=0;i<m;i++){ for(int j=0;j<n;j++){ if(grid2[i][j]==1 && grid1[i][j]==1){ if(bfs(i,j, grid2, grid1)) { count++; } } } } return count; } };
Editor is loading...
Leave a Comment