Offer 驾到,掘友接招!我正在参与2022春招系列活动-刷题打卡任务,点击查看活动详情。
一、题目描述:
给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。
来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/nu…
二、思路分析:
dfs递归
三、AC 代码:
/**
* @param {character[][]} grid
* @return {number}
*/
var numIslands = function(grid) {
let res=0;
let len1=grid.length;
let len2=grid[0].length;
for(let i=0;i<len1;i++){
for(let j=0;j<len2;j++){
if(grid[i][j]==='1'){
dfs(i,j);
res++
}
}
}
return res;
function dfs(i,j){
if(i<0||i>=len1||j<0||j>=len2||grid[i][j]!=='1') return;
grid[i][j]='0';
dfs(i+1,j);
dfs(i-1,j);
dfs(i,j+1);
dfs(i,j-1);
}
};
四、总结:
dfs递归