#include <queue> #include <vector> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 判断岛屿数量 * @param grid char字符型vector<vector<>> * @return int整型 */ vector<pair<int,int>> vis; bool haveIn(pair<int,int> p){ for(int i=0;i<vis.size();i++){ if(vis[i].first==p.first&&vis[i].second==p.second){ return false; } } return true; } int solve(vector<vector<char> >& grid) { // write code here int n=grid.size();//岛屿数量; int m=grid[0].size(); int count=0; if(n==0) return 0; for(int i=0;i<n;i++){ for(int j=0;j<m;j++){ if(grid[i][j]=='1'){ count++; queue<pair<int,int>> qu; qu.push(pair<int,int>(i,j)); while(!qu.empty()){ vis.push_back(qu.front()); pair<int,int> temp=qu.front(); qu.pop(); int x=temp.first;int y=temp.second; grid[x][y]=0; if(x-1>=0&& grid[x-1][y]=='1'){ qu.push(pair<int, int>(x-1,y)); } if(x+1<n&& grid[x+1][y]=='1'){ qu.push(pair<int, int>(x+1,y)); } if(y-1>=0&& grid[x][y-1]=='1'){ qu.push(pair<int, int>(x,y-1)); } if(y+1<m&& grid[x][y+1]=='1'){ qu.push(pair<int, int>(x,y+1)); } } } } } return count; } };