题解 | #岛屿数量#

岛屿数量

https://www.nowcoder.com/practice/0c9664d1554e466aa107d899418e814e

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 判断岛屿数量
     * @param grid char字符型二维数组
     * @return int整型
     */
    public int solve (char[][] grid) {
        int res=0;
        int row=grid.length;
        int col=grid[0].length;
        for(int i=0;i<row;i++){
            for(int j=0;j<col;j++){
                if(grid[i][j]=='1'){
                    res+=1;
                    //查看一下周围岛屿的情况
                    dfs(grid,i,j);
                }
            }
        }
        return res;
    }

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

        //判断是否是合法位置
        if(!isRight(grid,i,j)){
            return ;
        }
        //不是陆地
        if(grid[i][j]!='1'){
            return ;
        }

        //更改一下状态
        grid[i][j]='2';
        //遍历一下周围的状态
        dfs(grid,i,j-1);
        dfs(grid,i,j+1);
        dfs(grid,i-1,j);
        dfs(grid,i+1,j);
        
    }

    //用来判断遍历到的数组位置是否合法
    public boolean isRight(char[][]grid,int i,int j){
        return i>=0&&i<grid.length
        &&j>=0&&j<grid[0].length;

    }

 

}

全部评论
可以与二叉树的dfs遍历做类比,这个只是比二叉树的两个结点遍历的更多了一些,遍历了周围四个,再修改一下标记就好
点赞 回复 分享
发布于 2024-03-02 15:19 辽宁

相关推荐

09-02 11:14
已编辑
四川大学 Java
吴offer选手:这种面试是最烦的,学不到东西,然后还被挂的莫名其妙。之前看到一种说法是面试官如果不想要你了,就会问一些很简单的问题,防止你举报他
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务