力扣面试150题--岛屿数量
Day 59
题目描述
思路
一个岛屿是只要1上下左右连接,典型的深搜,如果具体见代码,主要就是得到一个岛屿后,就将1改为2,这样可以节约时间,遍历这个1的上下左右,确定岛屿数量就是通过找1的数目,因为之前为一个岛屿的都改为2了。
class Solution {public void dfs(char[][] grid,int i,int j){if (i < 0 || i >= grid.length || j < 0 || j >= grid[i].length || grid[i][j] != '1') {return;}// 标记当前位置为已访问grid[i][j] = '2';// 递归探索四个方向dfs(grid, i + 1, j);dfs(grid, i - 1, j);dfs(grid, i, j + 1);dfs(grid, i, j - 1);}public int numIslands(char[][] grid) {int num=0;for(int i=0;i<grid.length;i++){for(int j=0;j<grid[i].length;j++){if(grid[i][j]=='1'){//找到1 就是一个新岛屿,原因在于被发现的岛屿中所有的1都改成2了num++;dfs(grid,i,j);}}}return num;}
}