【BFS】LeetCode 200. 岛屿数量

题目链接

200. 岛屿数量

思路

BFS在图上的简单应用

代码

class Solution {
    private void bfs(int i, int j, boolean[][] visit, char[][] grid) {
        int[] dx = new int[]{1, 0, -1, 0};
        int[] dy = new int[]{0, 1, 0, -1};
        Queue<Pair<Integer, Integer>> queue = new LinkedList<>();

        queue.add(new Pair<>(i, j));
        visit[i][j] = true;
        while(!queue.isEmpty()){
            int x = queue.peek().getKey();
            int y = queue.poll().getValue();
            for(int k = 0; k < 4; k++){
                int nextX = x + dx[k];
                int nextY = y + dy[k];
                if(0 <= nextX && nextX < grid.length && 0 <= nextY && nextY < grid[0].length
                        && grid[nextX][nextY] == '1' && !visit[nextX][nextY]){
                    queue.add(new Pair<>(nextX, nextY));
                    visit[nextX][nextY] = true;
                }
            }
        }
    }

    public int numIslands(char[][] grid) {
        boolean[][] visit = new boolean[grid.length][grid[0].length];

        int result = 0;
        for(int i = 0; i < grid.length; i++){
            for(int j = 0; j < grid[i].length; j++){
                if(grid[i][j] == '1' && !visit[i][j]){
                    bfs(i, j, visit, grid);
                    result++;
                }
            }
        }

        return result;
    }
}
posted @   Frodo1124  阅读(50)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示