题解 | #岛屿数量#
岛屿数量
https://www.nowcoder.com/practice/0c9664d1554e466aa107d899418e814e
import java.util.*;
public class Solution {
/**
* 判断岛屿数量
* @param grid char字符型二维数组
* @return int整型
*/
public int solve (char[][] grid) {
// write code here
int m = grid.length;
int n = grid[0].length;
int result = 0;
for(int i = 0; i < m; i++) {
for(int j = 0; j < n; j++) {
if(grid[i][j] == '1') {
result++;
bfs(grid, i, j);
}
}
}
return result;
}
public void bfs(char[][] grid, int i, int j) {
int m = grid.length;
int n = grid[0].length;
Queue<int[]> q = new LinkedList<>();
q.offer(new int[]{i, j});
while(!q.isEmpty()) {
int sz = q.size();
for(int k = 0; k < sz; k++) {
int[] temp = q.poll();
int x = temp[0];
int y = temp[1];
if(x-1 >= 0 && grid[x-1][y] == '1') {
q.offer(new int[]{x-1, y});
grid[x-1][y] = '0';
}
if(y+1 < n && grid[x][y+1] == '1') {
q.offer(new int[]{x, y+1});
grid[x][y+1] = '0';
}
if(x+1 < m && grid[x+1][y] == '1') {
q.offer(new int[]{x+1, y});
grid[x+1][y] = '0';
}
if(y-1 >= 0 && grid[x][y-1] == '1') {
q.offer(new int[]{x, y-1});
grid[x][y-1] = '0';
}
}
}
}
}

查看11道真题和解析