题解 | #岛屿数量#

题目链接

岛屿数量


题目描述

时间限制: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]题解 | #岛屿数量#相关推荐

  1. 牛客题霸 [ 岛屿数量] C++题解/答案

    牛客题霸 [ 岛屿数量] C++题解/答案 题目描述 给一个01矩阵,1代表是陆地,0代表海洋, 如果两个1相邻,那么这两个1属于同一个岛.我们只考虑上下左右为相邻. 岛屿: 相邻陆地可以组成一个岛屿 ...

  2. 岛屿问题 通用解-463.岛屿周长-200.岛屿数量-695.岛屿的最大面积-827.最大人工岛

    文章目录 岛屿问题 如何在网格上做DFS(通用解) 463.岛屿的周长 题目 题解 -通用模板 题解2 200.岛屿数量 题目 题解 695.岛屿的最大面积 题目 题解 827.最大人工岛 题目 题解 ...

  3. js实现购物车数量的增加与减少,js实现购物车数量的自增与自减

    js实现购物车数量的增加与减少,js实现购物车数量的自增与自减 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//E ...

  4. Leetcode 200. 岛屿数量 解题思路及C++实现

    解题思路: 典型的深度优先搜索问题,跟第130题 被围绕的区域 有点像,只不过这里不仅要找出被水包围的岛屿,还要计算这些岛屿的总数. 使用深度优先搜索的方法,大循环是遍历整个grid数组(两个for循 ...

  5. 岛屿类-网格类问题-DFS | 力扣200. 岛屿数量

    本文讲解200. 岛屿数量问题,属于常见的岛屿类-网格类问题 本题使用DFS的思想 1 题目 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量. 岛屿总是被水包围, ...

  6. [Leedcode][JAVA][第200题][岛屿数量][DFS][BFS][并查集]

    [问题描述] 第200题 岛屿数量 给你一个由 '1'(陆地)和 '0'(水)组成的的二维网格,请你计算网格中岛屿的数量.岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成 ...

  7. 广度优先搜索——岛屿数量(Leetcode 200)

    题目选自Leetcode 200. 岛屿数量 经典的搜索题,求岛屿数量 这里我用的是广度优先搜索BFS 最朴素的方法, 虽然效率不高,但是简单易懂 主要的问题在于:如何确定有多少个岛屿? 每次对一个& ...

  8. Leetcode 200.岛屿数量

    Time: 20190902 Type: Medium 题目描述 给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地 ...

  9. 刷题笔记 | 朋友圈、岛屿的最大面积、岛屿数量

    1. 朋友圈 班上有 N 名学生.其中有些人是朋友,有些则不是.他们的友谊具有是传递性.如果已知 A 是 B 的朋友,B 是 C 的朋友,那么我们可以认为 A 也是 C 的朋友.所谓的朋友圈,是指所有 ...

最新文章

  1. java zookeeper_Java zookeeper开发实例
  2. go var type 互转_Go语言学习笔记(第九章) 结构体
  3. Git创建repository,以及clone,提交一个repository
  4. poj 3164(最小树形图)
  5. Android数据保存之SharedPreference
  6. nlogn求最长不上升子序列
  7. 这不是我想要的Serverless
  8. 常用python内置函数_python常用内置函数
  9. ubuntu下Qt cannot find -lGL错误的解决方法
  10. 频收罚单的浦发银行:增收不增利,曾遭骗贷数亿元,内控缺位?
  11. 20200411使用Potplayer对视频进行逐帧截图
  12. 苍井空老师的Twitter
  13. ACDSee Photo Studio 8 for Mac v8.0.2283 数字图象编辑处理软件
  14. html图片圆点切换,图片轮播带小圆点选择左右切换
  15. 新浪微博开放平台 PHP 与 OAuth 接口
  16. spring cloud 微服务调用链
  17. 可以下载视频的手机浏览器
  18. 详解闲鱼推荐系统(长文收藏)
  19. 淘宝模拟登录 +淘宝商品详情数据、淘宝商品列表数据爬取
  20. 漫步微积分二十——微分和切线逼近

热门文章

  1. GCC 连接器、链接标准库 gcc -l、链接手动创建库(指定目录的库 gcc -L)
  2. 认清自己,就能活出更好的自己
  3. 【C#】Out与ref是干什么的?
  4. starrocks问题小结
  5. Python中常见字符串去除空格的方法总结
  6. LeetCode简单题之比较含退格的字符串
  7. LeetCode简单题之山羊拉丁文
  8. TensorFlow解析常量、变量和占位符
  9. 机器学习算法的优点和缺点总结
  10. Libzip 版本过低或提示reinstall解决方法