力扣刷题——200. 岛屿数量
200. 岛屿数量
搜索
使用DFS,每次找到岛屿就将其设置为海水
package leetcode;
public class T200 {
class Solution {
int ans = 0;
//定义方向偏移量
int[][] dirs = {{0, 1},{1, 0},{0, -1},{-1, 0}};
public int numIslands(char[][] grid) {
//查找所有可以dfs的点
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;
}
public void dfs(char[][] grid, int x, int y) {
//检查是否超出边界
if (x <0 || y < 0 || x >= grid.length || y >= grid[0].length || grid[x][y] == '0') {
return;
}
//当前位置改为海水
grid[x][y] = '0';
//查找四个方向
for (int i = 0; i < 4; ++i) {
dfs(grid, x + dirs[i][0], y + dirs[i][1]);
}
}
}
}
posted on 2023-02-25 12:33 pumpkinsBig 阅读(20) 评论(0) 收藏 举报
浙公网安备 33010602011771号