题解 | #岛屿数量#

岛屿数量

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

这种方法总体来说就是遍历各个格子,遇到陆地就遍历整块大陆,边遍历边标记,后续不再重复遍历。
这种方法贴近人类思想,便于理解,但是很慢。

import java.util.*;


public class Solution {
    /**
     * 判断岛屿数量
     * @param grid char字符型二维数组 
     * @return int整型
     */
    public void dfs(int i, int j, char[][] grid, int[][] searched){
        int m = grid.length, n = grid[0].length;
        Deque<Integer[]> deque = new LinkedList();
        deque.addLast(new Integer[]{i,j});
        searched[i][j] = 1;
        while(!deque.isEmpty()){
            Integer[] temp = deque.removeFirst();
            int p = temp[0];
            int q = temp[1];
            if(p+1<m && searched[p+1][q]==0 && grid[p+1][q]=='1'){
                deque.addLast(new Integer[]{p+1,q}); 
                searched[p+1][q] = 1;
            } 
            if(p-1>=0 && searched[p-1][q]==0 && grid[p-1][q]=='1'){
                deque.addLast(new Integer[]{p-1,q});
                searched[p-1][q] = 1;
            } 
            if(q+1<n && searched[p][q+1]==0 && grid[p][q+1]=='1'){
                deque.addLast(new Integer[]{p,q+1});
                searched[p][q+1] = 1;
            } 
            if(q-1>=0 && searched[p][q-1]==0 && grid[p][q-1]=='1'){
                deque.addLast(new Integer[]{p,q-1});
                searched[p][q-1] = 1;
            } 
        }
    }
    public int solve (char[][] grid) {
        // write code here
        int count = 0, m = grid.length, n = grid[0].length;
        
        int[][] searched = new int[m][n];
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(grid[i][j]=='1' && searched[i][j]==0){
                    count += 1;
                    dfs(i, j, grid, searched);
                }
            }
        }
        return count;
    }
}


全部评论

相关推荐

昨天 16:42
门头沟学院 Java
1.今天什么国标的公司打电话约面试,还得准备ppt,好麻烦,网上查薪资一般,打算拒了,不面了2.字节又复活了,什么安全开发,也不知道怎么样,面一面试试吧,还是挺想去字节的,但好难,随缘吧所以今天没面试
嵌入式的小白:面试前可以好好准备下 1.看看你投递的岗位的岗位描述,分析下是哪个业务线,同使要罗列他们描述中提到的技术点 2.根据1中的两点准备 3.岗位描述中应该还有语言要求,这个刷刷八股,要是对自己语言能力很有把握,那就不用看这点了 4.找下你简历中项目部分,看有没有和岗位描述中技术点重合的,这种在面试提到项目时,是高概率问题 好好准备,祝你面试顺利
我的求职进度条
点赞 评论 收藏
分享
10-16 11:21
门头沟学院 Java
xdu通信dddd:我小米都面完两个月了 八月底面完的,现在还是显示面试中,没有比我恐怖的
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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