【LeetCode热题100(50/100)】岛屿数量

题目地址: 链接

思路: 如果当前为陆地且未被访问过,则对当前路径进行 dfs(同时标记为访问过),最后统计进入最外层 dfs 的次数

js 复制代码
/**
 * @param {character[][]} grid
 * @return {number}
 */
var numIslands = function(grid) {
    const dfs = (x, y) => {

        isVit[x][y] = true;
        for(let i = 0; i < 4; i ++) {
            let [nx, ny] = [x + dx[i], y + dy[i]];
            if(0 <= nx && nx < n && 0 <= ny && ny < m && !isVit[nx][ny] && grid[x][y] == '1') {
                dfs(nx, ny);
            }
        }
    }
    let [n, m] = [grid.length, grid[0].length];
    let isVit = Array.from({length: n}, ()=>new Array(m).fill(false));
    let ans = 0;
    const dx = [0, 1, 0, -1];
    const dy = [1, 0, -1, 0];
    for(let i = 0; i < n; i ++) {
        for(let j = 0; j < m; j ++) {
            if(!isVit[i][j] && grid[i][j] == '1') {
                dfs(i, j);
                ans ++;
            }
        }
    }

    return ans;
};
相关推荐
文丑颜不良啊4 小时前
LeetCode576~600题目解析
java·leetcode
lisw054 小时前
分岔论揭示演化突变密码
开发语言·算法·数学建模
aqiu1111115 小时前
C++ TopK:使用 nth_element 快速求最小 K 个数(蓝桥杯 / LeetCode 可用)
算法
Suprman5 小时前
平面排版问题的数学建模与算法设计
算法·数学建模·排序算法·排版套料
FPGA信号处理5 小时前
【应用随机过程】:更新过程与马尔可夫链入门
算法·概率论
重生之小比特5 小时前
【算法拾光】二分查找|在排序数组中查找元素的第一个和最后一个位置 + 搜索旋转排序数组
数据结构·算法·排序算法
吴可可1235 小时前
DXF与AAMA格式转换模块推荐
算法
重生之小比特5 小时前
【算法拾光】二分查找|搜索旋转排序数组 + 寻找旋转排序数组中的最小值
算法
YukiRinLL5 小时前
查找与排序算法:复杂度、稳定性
数据结构·算法·排序算法
招聘风控观察13 小时前
招聘质量管理是什么?招聘质量的定义与评价口径完整解释
职场和发展