• 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);
    }
}
  • 遍历每个格子,