【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;
};
相关推荐
墨染点香3 小时前
LeetCode 刷题【134. 加油站】
算法·leetcode·职场和发展
yi碗汤园4 小时前
【一文了解】八大排序-冒泡排序、选择排序
开发语言·前端·算法·unity·c#·1024程序员节
二倍速播放4 小时前
贪心算法 with Gemini
算法·贪心算法
oliveira-time4 小时前
整数划分问题
算法
liu****4 小时前
笔试强训(十三)
开发语言·c++·算法·1024程序员节
Voyager_45 小时前
算法学习记录08——并归的应用(LeetCode[315])
学习·算法·leetcode
是码农一枚5 小时前
洞悉过往,一目了然:浅述视频融合平台EasyCVR如何实现海量视频录像的智能检索与高效回看
算法
是码农一枚5 小时前
解密视频汇聚平台EasyCVR视频编解码与转码技术如何成就全协议、全终端的无缝视频体验
算法
yuzhuanhei5 小时前
机器学习算法常用算法
人工智能·算法·机器学习