思路
就是深搜,将可以走到的都标为0
##代码
class Solution {
static int[][] to = {{1,0},{0,1},{-1,0},{0,-1}};
public int numIslands(char[][] grid) {
// 深搜
int result = 0;
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[0].length; j++) {
if (grid[i][j] == '1'){
dfs(i,j,grid);
result++;
}
}
}
return result;
}
private void dfs(int i, int j, char[][] grid) {
grid[i][j]='0';//标记这个点走过
for (int k = 0; k < 4; k++) {
int ii = i + to[k][0];
int jj = j +to[k][1];
if (ii >= grid.length || ii<0 ||jj>=grid[0].length|| jj < 0){
continue;
}
if (grid[ii][jj] == '1'){
dfs(ii,jj,grid);
}
}
}
}
注意
每一个点都会循环四个方向,但是不要再让他走他来过的那个方向,要不就死循环了