LeetCode-200-岛屿数量
思路
把二维数组看成无向图,使用DFS算法,遍历四个方向,当前点为1就继续深入,并置为0,最后统计外层DFS的次数,就是岛屿数量
代码
class Solution {
public int numIslands(char[][] grid) {
int m=grid.length;
int n=grid[0].length;
int cnt=0;
for(int i=0;i<m;i++){
for(int j=0;j<n;j++){
if(grid[i][j]=='1'){
dfs(grid,i,j);
cnt++;
}
}
}
return cnt;
}
void dfs(char[][]grid,int i,int j){
int m=grid.length;
int n=grid[0].length;
if(i<0||j<0||i>=m||j>=n||grid[i][j]=='0')return;
grid[i][j]='0';
dfs(grid,i+1,j);
dfs(grid,i-1,j);
dfs(grid,i,j+1);
dfs(grid,i,j-1);
}
}