-
2.12
- 秒了
-
1.40
- 主函数找到岛屿,用 dfs 淹没,这样主函数遍历时都会剪枝
-
11.14
- 就是开头一遍历,遍历每个节点时,‘dfs淹没’
- 需要注意里面是‘0’ , ‘1’,而不是0,1
- dfs判断里的if是防止边界出去,其中下右边界是m-1和n-1
- 有点小意思
class Solution {
public int numIslands(char[][] grid) {
if(grid==null||grid.length==0) return 0;
int count = 0;
int m=grid.length,n=grid[0].length;
for(int i=0;i<m;i++){
for(int k=0;j<n;j++){
if(grid[i][j]=='1'){
dfs(grid,i,j);
count++;
}
}
}
return count;
}
public void dfs(char[][] grid,int i,int j){
int m=grid.length,n=grid[0].length;
//边界or水
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);
}
}- 遍历每个格子,
