当前位置: 首页 > news >正文

力扣题/图论/岛屿数量

岛屿数量

力扣原题

给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量。

岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。

此外,你可以假设该网格的四条边均被水包围。

  • 示例 1:

输入:grid = [
[“1”,“1”,“1”,“1”,“0”],
[“1”,“1”,“0”,“1”,“0”],
[“1”,“1”,“0”,“0”,“0”],
[“0”,“0”,“0”,“0”,“0”]
]
输出:1

  • 示例 2:

输入:grid = [
[“1”,“1”,“0”,“0”,“0”],
[“1”,“1”,“0”,“0”,“0”],
[“0”,“0”,“1”,“0”,“0”],
[“0”,“0”,“0”,“1”,“1”]
]
输出:3

/*** @param {character[][]} grid* @return {number}*/
var numIslands = function (grid) {const m = grid.lengthconst n = grid[0].lengthlet landCount = 0;function expandLand(row, col) {const isLand = grid[row][col]if (isLand !== '1') returngrid[row][col] = '-1' // 访问过的土地,不可再访问if (row > 0) {// 上expandLand(row - 1, col)}if (row < m - 1) {// 下expandLand(row + 1, col)}if (col > 0) {// 左expandLand(row, col - 1)}if (col < n - 1) {// 右expandLand(row, col + 1)}}for (let r = 0; r < m; r++) {for (let c = 0; c < n; c++) {// 如果当前位置是陆地,则为新陆地const isLand = grid[r][c]// 访问周边陆地if (isLand === '1') {landCount += 1expandLand(r, c) // 扩张联通的陆地,全部置为已访问}}}return landCount
};

解题思路

遍历所有位置,首次遇到值为'1'陆地 时,此时岛屿数量+1,然后从上下左右四个方向寻找相连通的陆地,并标识为'-1'已访问状态,再寻找下一个陆地就不会重复了

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【大数据】智慧园区大数据云平台整体建设方案(Word原件)
  • 【Python学习-UI界面】PyQt5 小部件14-QDock 子窗口
  • Redis常见的数据类型和应用场景
  • 一、在cubemx上配置sd和fatfs示例演示
  • 聚观早报 | 一加13配置细节曝光;谷歌首推人工智能手机
  • 单元训练09:定时器实现秒闪功能
  • 必看!亚马逊卖家如何利用自养号测评策略提升买家评价与销量
  • 第四范式发布AI+5G视频营销产品 助力精准获客与高效转化
  • 面对复杂订单统计,如何用这款工具化整为零?
  • 光影漫游者:开创沉浸式体验新纪元—轻空间
  • Sublime Text常用快捷键大全
  • Java Hashtable【线程安全】的介绍和使用
  • Hadoop环境安装及HDFS初步使用
  • ros-noetic安装lio-sam
  • 把VTK窗口嵌入到Qt的窗口中显示(二)
  • CSS中外联样式表代表的含义
  • JAVA多线程机制解析-volatilesynchronized
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • Otto开发初探——微服务依赖管理新利器
  • PHP 7 修改了什么呢 -- 2
  • React Native移动开发实战-3-实现页面间的数据传递
  • react-native 安卓真机环境搭建
  • ViewService——一种保证客户端与服务端同步的方法
  • 阿里云购买磁盘后挂载
  • 第十八天-企业应用架构模式-基本模式
  • 面试题:给你个id,去拿到name,多叉树遍历
  • 盘点那些不知名却常用的 Git 操作
  • 扫描识别控件Dynamic Web TWAIN v12.2发布,改进SSL证书
  • 设计模式(12)迭代器模式(讲解+应用)
  • 掌握面试——弹出框的实现(一道题中包含布局/js设计模式)
  • 大数据全解:定义、价值及挑战
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • #QT 笔记一
  • #控制台大学课堂点名问题_课堂随机点名
  • (003)SlickEdit Unity的补全
  • (C11) 泛型表达式
  • (附源码)spring boot北京冬奥会志愿者报名系统 毕业设计 150947
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (规划)24届春招和25届暑假实习路线准备规划
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (三分钟)速览传统边缘检测算子
  • (转)C#调用WebService 基础
  • (转)创业家杂志:UCWEB天使第一步
  • **PHP二维数组遍历时同时赋值
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .equals()到底是什么意思?
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET/C# 异常处理:写一个空的 try 块代码,而把重要代码写到 finally 中(Constrained Execution Regions)
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .vimrc php,修改home目录下的.vimrc文件,vim配置php高亮显示
  • /*在DataTable中更新、删除数据*/
  • @FeignClient注解,fallback和fallbackFactory
  • @RequestMapping 和 @GetMapping等子注解的区别及其用法