岛屿数量
import java.util.*;
public class Solution {
/**
* 判断岛屿数量
* @param grid char字符型二维数组
* @return int整型
*/
static int ans = 0;
public int solve (char[][] grid) {
// write code here
for(int i = 0; i < grid.length; i++) {
for(int j = 0; j < grid[0].length; j++) {
if(grid[i][j] == '1') {
dfs(grid,i,j);
ans++;
}
}
}
return ans;
}
private static void dfs(char[][] grid, int i, int j) {
grid[i][j] = '0';
//向下走
if((i+1) < grid.length && grid[i+1][j] == '1') {
dfs(grid, i + 1, j);
}
//向上走
if((i-1) >= 0 && grid[i-1][j] == '1') {
dfs(grid, i - 1, j);
}
//向左走
if((j-1) >= 0 && grid[i][j-1] == '1') {
dfs(grid, i, j - 1);
}
//向右走
if((j+1) < grid[0].length && grid[i][j+1] == '1') {
dfs(grid, i, j + 1);
}
return;
}
}
这次的教训是。字符数组在比对时应该用’1’。但是我直接用了1,测试就不正确了。
这篇博客介绍了如何使用Java解决计算二维字符数组中连通的'1'(代表陆地)构成的岛屿数量的问题。核心算法采用了深度优先搜索(DFS),通过遍历数组并标记已访问的元素来避免重复计数。博主分享了在实现过程中遇到的一个错误,即误将字符'1'当作整数1进行比较,导致测试失败,并提醒读者注意此类细节。
836

被折叠的 条评论
为什么被折叠?



