[JS]题解 | #岛屿数量#
题解 | #岛屿数量#
题目链接
岛屿数量
题目描述
时间限制:1秒 空间限制:256M
描述
给一个01矩阵,1代表是陆地,0代表海洋, 如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。
岛屿: 相邻陆地可以组成一个岛屿(相邻:上下左右) 判断岛屿个数。
例如:
输入
[
[1,1,0,0,0],
[0,1,0,1,1],
[0,0,0,1,1],
[0,0,0,0,0],
[0,0,1,1,1]
]
对应的输出为
3
示例1
输入:
[[1,1,0,0,0],[0,1,0,1,1],[0,0,0,1,1],[0,0,0,0,0],[0,0,1,1,1]]
返回值:
3
示例2
输入:
[[0]]
返回值:
0
示例3
输入:
[[1,1],[1,1]]
返回值:
1
备注:
01矩阵范围<=200*200
解题思路
很典型的染色法,对每个点进行dfs,将与之相邻的为1的点全染色,用sum记录当前染色值。
简而言之,第一个岛全染色为-1,第二个岛全染色为-2,最后取最大负数的反,即为正确答案。
用一个dfs就可以解决问题。
解题代码
/*** 判断岛屿数量* @param grid string字符串型二维数组 * @return int整型*/
function solve(grid) {// write code here// grid = [[1, 1, 0, 0, 0], [0, 1, 0, 1, 1], [0, 0, 0, 1, 1], [0, 0, 0, 0, 0], [0, 0, 1, 1, 1]];let col = grid.length;let row = grid[0].length;let sum = 0;let dfs = (x, y) => {if (grid[x][y] == 1) {grid[x][y] = sum;}let tox = x + 1;let toy = y;if (tox >= 0 && tox < col && toy >= 0 && toy < row && grid[tox][toy] == 1) {dfs(tox, toy);}tox = x - 1;toy = y;if (tox >= 0 && tox < col && toy >= 0 && toy < row && grid[tox][toy] == 1) {dfs(tox, toy);}tox = x;toy = y + 1;if (tox >= 0 && tox < col && toy >= 0 && toy < row && grid[tox][toy] == 1) {dfs(tox, toy);}tox = x;toy = y - 1;if (tox >= 0 && tox < col && toy >= 0 && toy < row && grid[tox][toy] == 1) {dfs(tox, toy);}return;}for (let i = 0; i < col; i++) {for (let j = 0; j < row; j++) {if (grid[i][j] == 1) {sum--;dfs(i, j);}}}sum = sum < 0 ? -sum : sum;return sum;
}
[JS]题解 | #岛屿数量#相关推荐
- 牛客题霸 [ 岛屿数量] C++题解/答案
牛客题霸 [ 岛屿数量] C++题解/答案 题目描述 给一个01矩阵,1代表是陆地,0代表海洋, 如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右为相邻. 岛屿: 相邻陆地可以组成一个岛屿 ...
- 岛屿问题 通用解-463.岛屿周长-200.岛屿数量-695.岛屿的最大面积-827.最大人工岛
文章目录 岛屿问题 如何在网格上做DFS(通用解) 463.岛屿的周长 题目 题解 -通用模板 题解2 200.岛屿数量 题目 题解 695.岛屿的最大面积 题目 题解 827.最大人工岛 题目 题解 ...
- js实现购物车数量的增加与减少,js实现购物车数量的自增与自减
js实现购物车数量的增加与减少,js实现购物车数量的自增与自减 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...
- Leetcode 200. 岛屿数量 解题思路及C++实现
解题思路: 典型的深度优先搜索问题,跟第130题 被围绕的区域 有点像,只不过这里不仅要找出被水包围的岛屿,还要计算这些岛屿的总数. 使用深度优先搜索的方法,大循环是遍历整个grid数组(两个for循 ...
- 岛屿类-网格类问题-DFS | 力扣200. 岛屿数量
本文讲解200. 岛屿数量问题,属于常见的岛屿类-网格类问题 本题使用DFS的思想 1 题目 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量. 岛屿总是被水包围, ...
- [Leedcode][JAVA][第200题][岛屿数量][DFS][BFS][并查集]
[问题描述] 第200题 岛屿数量 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量.岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成 ...
- 广度优先搜索——岛屿数量(Leetcode 200)
题目选自Leetcode 200. 岛屿数量 经典的搜索题,求岛屿数量 这里我用的是广度优先搜索BFS 最朴素的方法, 虽然效率不高,但是简单易懂 主要的问题在于:如何确定有多少个岛屿? 每次对一个& ...
- Leetcode 200.岛屿数量
Time: 20190902 Type: Medium 题目描述 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地 ...
- 刷题笔记 | 朋友圈、岛屿的最大面积、岛屿数量
1. 朋友圈 班上有 N 名学生.其中有些人是朋友,有些则不是.他们的友谊具有是传递性.如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友.所谓的朋友圈,是指所有 ...
最新文章
- java zookeeper_Java zookeeper开发实例
- go var type 互转_Go语言学习笔记(第九章) 结构体
- Git创建repository,以及clone,提交一个repository
- poj 3164(最小树形图)
- Android数据保存之SharedPreference
- nlogn求最长不上升子序列
- 这不是我想要的Serverless
- 常用python内置函数_python常用内置函数
- ubuntu下Qt cannot find -lGL错误的解决方法
- 频收罚单的浦发银行:增收不增利,曾遭骗贷数亿元,内控缺位?
- 20200411使用Potplayer对视频进行逐帧截图
- 苍井空老师的Twitter
- ACDSee Photo Studio 8 for Mac v8.0.2283 数字图象编辑处理软件
- html图片圆点切换,图片轮播带小圆点选择左右切换
- 新浪微博开放平台 PHP 与 OAuth 接口
- spring cloud 微服务调用链
- 可以下载视频的手机浏览器
- 详解闲鱼推荐系统(长文收藏)
- 淘宝模拟登录 +淘宝商品详情数据、淘宝商品列表数据爬取
- 漫步微积分二十——微分和切线逼近