#include <vector>
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 判断岛屿数量
* @param grid char字符型vector<vector<>>
* @return int整型
*/
int nex[4][2]={{0,-1},{0,1},{1,0},{-1,0}};
void dfs(vector< vector<char>>& grid,int i,int j ){
int n=grid.size();
int m=grid[0].size();
grid[i][j]='0';
for(int t=0;t<4;t++){
int dx=i+nex[t][0];
int dy=j+nex[t][1];
if(dx>=0&&dx<n&&dy>=0&&dy<m&&grid[dx][dy]=='1'){
dfs(grid,dx,dy);
}
}
}
int solve(vector<vector<char> >& grid) {
// write code here
int n=grid.size();
if(n==0)
return 0;
int m=grid[0].size();
int count =0;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(grid[i][j]=='1'){
count++;
dfs(grid,i,j);
}
}
}
return count;
}
};
经典的DFS,将一个1遍历周边的四个方向,遇1置0即可。

京公网安备 11010502036488号