注意细节问题。
class Solution {
public:
/**
* 判断岛屿数量
* @param grid char字符型vector<vector<>>
* @return int整型
*/
int solve(vector<vector<char> >& grid) {
// write code here
int res=0;
vector<vector<int>> visit;
for(int i =0 ; i < grid.size(); i++){
visit.push_back(vector<int> ());
for(int j = 0; j<grid[0].size();j++){
visit[i].push_back(0);
}
}
for(int i =0 ; i < grid.size(); i++){
for(int j = 0; j<grid[0].size();j++){
if(!visit[i][j]&&grid[i][j]=='1'){
BFS(grid,visit,i,j);
res++;
}
}
}
return res;
}
void BFS(vector<vector<char> >& grid, vector<vector<int> >& visits,int x, int y){
const static int dx[] = {-1,1,0,0};
const static int dy[] = {0,0,-1,1};
queue<pair<int,int>> Q;
Q.push({x,y});
visits[x][y] = 1;
while(!Q.empty()){
int x = Q.front().first;
int y = Q.front().second;
Q.pop();
for(int i = 0;i<4;i++){
int newx = x + dx[i];
int newy = y + dy[i];
if(newx<0||newx>=visits.size()
||newy<0||newy>=visits[0].size())
continue;
if(!visits[newx][newy]&&grid[newx][newy]=='1'){
Q.push({newx,newy});
visits[newx][newy] = 1;
}
}
}
}
};
京公网安备 11010502036488号