zoukankan      html  css  js  c++  java
  • [leetcode]200. Number of Islands岛屿数量

    dfs的第一题

    被边界和0包围的1才是岛屿,问题就是分理出连续的1

    思路是遍历数组数岛屿,dfs四个方向,遇到1后把周围连续的1置零,代表一个岛屿。

    /*
        思路是:遍历二维数组,遇到1就把周围连续的1变成0,res+1,然后继续遍历,直到结束
        周围连续1置零用的是dfs,向四个位置搜索,遇到0返回
         */
        public int numIslands(char[][] grid) {
            if (grid.length==0) return 0;
            int r = grid.length;
            int c = grid[0].length;
            int res = 0;
            //遍历数组
            for (int i = 0; i < r; i++) {
                for (int j = 0; j < c; j++) {
                    if (grid[i][j]=='1')
                    {
                        res++;
                        //进行置零操作
                        dfs(grid,i,j,r,c);
                    }
                }
            }
            return res;
        }
        public void dfs(char[][] grid,int i,int j,int r,int c)
        {
            //出界和遇0返回
            if (i<0||j<0||i>=r||j>=c||grid[i][j]!='1') return;
            //置零
            grid[i][j]='0';
            //把周围连续的置零
            dfs(grid,i-1,j,r,c);
            dfs(grid,i+1,j,r,c);
            dfs(grid,i,j-1,r,c);
            dfs(grid,i,j+1,r,c);
        }
  • 相关阅读:
    SpringBoot入门
    Java自定义注解(1)
    git集成idea
    git常用命令
    Shiro授权
    shiro认证
    shiro入门
    SpringMVC文件上传
    SpringMVC入门
    mybatis关联关系映射
  • 原文地址:https://www.cnblogs.com/stAr-1/p/8417214.html
Copyright © 2011-2022 走看看