Untitled
unknown
plain_text
a year ago
1.3 kB
9
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