Leetcode200. 岛屿数量

100 阅读1分钟

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递归