JavaScript : leetcode题号 433计算岛屿的个数(Number of Islands)

题目

题目:计算岛屿的个数(Number of Islands)
描述:给一个 01 矩阵,求不同的岛屿的个数。0 代表海,1 代表岛,如果两个 1 相邻,那么这两个 1 属于同一个岛。我们只考虑上下左右为相邻。

leetcode题号——433,难度——easy

思路

  通过遍历找到岛屿的边缘,然后用DFS深度优先搜索可以找到整个岛屿并将岛屿转变为海洋(同化方法防止重复计算),岛屿计数+1,继续向后搜索岛屿直到整个区域搜索完成。

Javascript实现:

//垂直或者水平方向,只有1的独立块有同个。(被0包括的1为一个块)
let grid = [
    [1, 1, 0, 0, 0],
    [1, 1, 0, 0, 0],
    [0, 0, 1, 0, 0],
    [0, 0, 0, 1, 1]
] // islands =3

grid = [
    [1, 1, 0, 0, 0],
    [1, 1, 0, 0, 0],
    [0, 0, 0, 0, 0],
    [0, 0, 0, 1, 1]
] // islands =2
grid = [
    [1, 1, 0, 0, 0],
    [1, 1, 0, 0, 0],
    [0, 0, 0, 0, 0]
] // islands =1

grid = [
    [1, 0, 1, 0, 1]
    // [0, 0, 1, 0, 0],
    // [0, 0, 0, 0, 0]
] // islands =3
let ilandCount = 0;
let row = grid.length
let col = grid[0].length

//DFS深度遍历,遍历过的1同化为0,然后递归方式遍历4个方向
function dfs(grid, i, j, row, col) {
    console.log(i,j)
    if (i >= row || i < 0 || j < 0 || j >= col || grid[i][j] === 0) {
        console.log('false')
        return false
    }
    console.log(`(${i},${j}),${grid[i][j]}`)
    grid[i][j] = 0;
    dfs(grid, i - 1, j, row, col)
    dfs(grid, i + 1, j, row, col)
    dfs(grid, i, j + 1, row, col)
    dfs(grid, i, j - 1, row, col)
}

function main() {
    for (let i = 0; i < grid.length; i++) {
        for (let j = 0; j < grid[i].length; j++) {
            if (grid[i][j] === 1) {
                dfs(grid, i, j, row, col)
                ilandCount++;
            }
        }
    }
    console.log(grid)
    console.log(ilandCount)
}

main();
 


http://www.niftyadmin.cn/n/124861.html

相关文章

2022年MathorCup数学建模B题无人仓的搬运机器人调度问题解题全过程文档加程序

2022年第十二届MathorCup高校数学建模 B题 无人仓的搬运机器人调度问题 原题再现 本题考虑在无人仓内的仓库管理问题之一&#xff0c;搬运机器人 AGV 的调度问题。更多的背景介绍请参看附件-背景介绍。对于无人仓来说&#xff0c;仓库的地图模型可以简化为图的数据结构。 仓库…

Win10安装MySQL5.7.22 解压缩版(手动配置)方法

1.下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/5.7.html#downloads 直接点击下载项 下载后&#xff1a; 2.可以把解压的内容随便放到一个目录&#xff0c;我的是如下目录&#xff08;放到C盘的话&#xff0c;可能在修改ini文件时涉及权限问 题&#xff0c;之后…

leetcode-每日一题-807(中等,数组)

正常情况第一眼看这道题&#xff0c;看懂意思的话很简单就可以解出来。给你一座由 n x n 个街区组成的城市&#xff0c;每个街区都包含一座立方体建筑。给你一个下标从 0 开始的 n x n 整数矩阵 grid &#xff0c;其中 grid[r][c] 表示坐落于 r 行 c 列的建筑物的 高度 。城市的…

MySQL面试题-锁相关

目录 1.MySQL 锁的类型有哪些呢&#xff1f; 2.如何使用全局锁 3.如果要全库只读&#xff0c;为什么不使用set global readonlytrue的方式&#xff1f; 4.表级锁和行级锁有什么区别&#xff1f; 5.行级锁的使用有什么注意事项&#xff1f; 6.InnoDB 有哪几类行锁&#xff…

童流感诊治最新共识,专家全面解读

流感高发季节已经到来&#xff0c;孩子们接种疫苗吗&#xff1f;流感是人类面临的主要公共健康问题之一&#xff0c;儿童是流感的高危人群和严重病例的高危人群。近日&#xff0c;中华医学会呼吸病学年会第22届全国呼吸病学学术会议在福建厦门召开。会上&#xff0c;首都医科大…

mysql5.7.33安装配置教程【保姆级安装教程】

MySQL5.7.33安装教程 1、官方网站下载 点击这里跳转页面下载 1.1、看下你是什么系统&#xff0c;系统是64位还是32位 2、解压到D盘跟路径或者其下面纯英文路径 2.1、可见它没有data、log等文件夹&#xff0c;不需手动添加(下面执行命令自动初始化)&#xff01;&#xff01; …

“基于Spring Cloud Alibaba的微服务架构实战:Nacos配置管理“

引言 Spring Cloud Alibaba 是 Spring Cloud 和 Alibaba 集团联合推出的开源微服务框架&#xff0c;旨在为 Java 开发者提供一种简单、易用、高效的微服务解决方案。Nacos 是一个面向云原生应用的动态服务发现、配置管理和服务管理平台&#xff0c;提供了服务注册与发现、配置管…

12_MySQL数据类型

1. MySQL中的数据类型常见数据类型的属性&#xff0c;如下&#xff1a;2. 整数类型2.1 类型介绍整数类型一共有 5 种&#xff0c;包括 TINYINT、SMALLINT、MEDIUMINT、INT&#xff08;INTEGER&#xff09;和 BIGINT。它们的区别如下表所示&#xff1a;2.2 可选属性2.2.1:MM : 表…