链接:岛屿数量_牛客题霸_牛客网 (nowcoder.com)
题目分析:
1.相邻陆地可以组成一个岛屿;只有一个陆地且未被访问过的也是岛屿。
2.可以使用深度优先搜索的遍历方式,访问上下左右的方式:
代码分析:
import java.util.*;
public class Solution {
int m, n;
int[] dx = {0, 0, 1, -1};
int[] dy = {1, -1, 0, 0};
boolean[][] vis = new boolean[210][210];
public int solve (char[][] grid) {
m = grid.length;
n = grid[0].length;
int ret = 0;
for(int i = 0; i < m; i++){
for(int j = 0; j < n; j++){
if(grid[i][j] == '1' && !vis[i][j]){
ret++;
dfs(grid, i, j);
}
}
}
return ret;
}
public void dfs(char[][] grid, int i, int j){
vis[i][j] = true;
for(int k = 0; k < 4; k++){
int x = i + dx[k], y = j + dy[k];
if(x >= 0 && x < m && y >= 0 && y < n && grid[x][y] == '1' && !vis[x][y]){
dfs(grid, x, y);
}
}
}
}