题目链接:https://leetcode.cn/problems/pond-sizes-lcci/
题目如下:
class Solution {
public:
vector pondSizes(vector>& land) {
l=land;
int m=land.size();
if(m==0) return res;
int n=land[0].size();
int count;
vector> visited(m,vector(n,false));
for(int i=0;i
for(int j=0;j
if(visited[i][j]==false&&land[i][j]==0){
count=0;
bfs(visited,i,j,count,m,n);
res.push_back(count);
}
}
}
sort(res.begin(),res.end());
return res;
}
void bfs(vector>& visited,int x,int y,int& count,int m,int n){
queue> que;
que.push({x,y});
visited[x][y]=true;
count++;
while(que.size()){
auto t=que.front();
que.pop();
int dir[8][2]={{-1,1},{0,1},{1,1},{1,0},{1,-1},{0,-1},{-1,-1},{-1,0}};
for(int i=0;i<8;i++){
int a=t.first+dir[i][0];
int b=t.second+dir[i][1];
if(a>=0&&a=0&&b
que.push({a,b});
visited[a][b]=true;
count++;
}
}
}
}
private:
vector res;
vector> l;
};



