【BFS】LeetCode 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;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏