岛屿数量

矩阵中多处聚集着1,要想统计1聚集的堆数而不重复统计,那我们可以考虑每次找到一堆相邻的1,就将其全部改成0,而将所有相邻的1改成0的步骤又可以使用深度优先搜索(dfs),因此具体做法如下:

step 1:优先判断空矩阵等情况。 step 2:从上到下从左到右遍历矩阵每一个位置的元素,如果该元素值为1,统计岛屿数量。 step 3:使用dfs将遍历矩阵遇到的1以及相邻的1全部置为0。

至于dfs具体怎么操作,我们接着看。当我们遇到矩阵的某个元素为1时,首先将其置为了0,然后查看与它相邻的上下左右四个方向,如果这四个方向相邻元素为1,则进入该元素,进入该元素之后我们发现又回到了刚刚的子问题,又是把这一片相邻区域的1全部置为0,因此可以用递归实现。

终止条件:进入某个元素修改其值为0后,遍历四个方向发现周围都没有1,那就不用继续递归,返回即可,或者递归到矩阵边界也同样可以结束。 返回值:每一级的子问题就是把修改后的矩阵返回,因为其是函数引用,也不用管。 本级任务:对于每一级任务就是将该位置的元素置为0,然后查询与之相邻的四个方向,看看能不能进入子问题。

 public int solve (char[][] grid) {

        int m= grid.length;
        if(m==0) return 0;
        int n= grid[0].length;
        int count=0;
        for (int i=0;i<m;i++){
            for (int j=0;j<n;i++){
                if(grid[i][j]=='1'){
                    count++;
                    dfs(grid,i,j);
                }
            }
        }
        return count;
    }

    public void dfs(char[][] grid,int i,int j){

        int m= grid.length;
        int n=grid[0].length;
        grid[i][j]='0';
        if(i-1>0&&grid[i-1][j]=='1') dfs(grid,i-1,j);
        if(i+1<m&&grid[i+1][j]=='1') dfs(grid,i+1,j);
        if(j-1>0&&grid[i][j-1]=='1') dfs(grid,i,j-1);
        if(j+1<n&&grid[i][j+1]=='1') dfs(grid,i,j+1);


    }



全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
# 春招至今,你的战绩如何? #
9842次浏览 92人参与
# 你的实习产出是真实的还是包装的? #
1768次浏览 41人参与
# 米连集团26产品管培生项目 #
5785次浏览 214人参与
# 军工所铁饭碗 vs 互联网高薪资,你会选谁 #
7489次浏览 43人参与
# 简历第一个项目做什么 #
31584次浏览 331人参与
# 重来一次,我还会选择这个专业吗 #
433389次浏览 3926人参与
# 巨人网络春招 #
11305次浏览 223人参与
# 当下环境,你会继续卷互联网,还是看其他行业机会 #
187019次浏览 1122人参与
# 牛客AI文生图 #
21411次浏览 238人参与
# 不考虑薪资和职业,你最想做什么工作呢? #
152303次浏览 887人参与
# 研究所笔面经互助 #
118877次浏览 577人参与
# 简历中的项目经历要怎么写? #
310102次浏览 4195人参与
# AI时代,哪些岗位最容易被淘汰 #
63464次浏览 805人参与
# 面试紧张时你会有什么表现? #
30490次浏览 188人参与
# 你今年的平均薪资是多少? #
213027次浏览 1039人参与
# 你怎么看待AI面试 #
179897次浏览 1237人参与
# 高学历就一定能找到好工作吗? #
64317次浏览 620人参与
# 你最满意的offer薪资是哪家公司? #
76446次浏览 374人参与
# 我的求职精神状态 #
448005次浏览 3129人参与
# 正在春招的你,也参与了去年秋招吗? #
363287次浏览 2637人参与
# 腾讯音乐求职进展汇总 #
160598次浏览 1111人参与
# 校招笔试 #
470549次浏览 2964人参与
牛客网
牛客网在线编程
牛客网题解
牛客企业服务