Lintcode433 Number of Islands solution 题解

【题目描述】

Given a boolean 2D matrix, 0 is represented as the sea, 1 is represented as the island. If two 1 is adjacent, we consider them in the same island. We only consider up/down/left/right adjacent.

Find the number of islands.

给一个01矩阵,求不同的岛屿的个数。

0代表海,1代表岛,如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。

【题目链接】

www.lintcode.com/en/problem/number-of-islands/

【题目解析】

Union Find 利用Union Find的find和union操作,对岛屿进行合并计数。因为UnionFind结构一般来说是一维的

| 1 | 2 | 3 | 4 |

-----------------

| 2 | 2 | 2 | 4 |

表达了如下的连通结构

1 - 2    4

| /

3

因此可以转换二维矩阵坐标为一维数字,M N 的矩阵中`(i,j) -> i N + j`。

建立UnionFind的parent[] (或者 parent hashmap),初始化各个parent[i * N + j] = i * N + j,如果grid[i][j] == true,则岛屿计数count++

之后再对矩阵遍历一次,当遇到岛屿时,则要检查上下左右四个方向的邻近点,如果也是岛屿则合并,并且count--;

Union Find结构可以用Path Compression和Weighted Union进行优化。

【参考答案】

www.jiuzhang.com/solutions/number-of-islands/

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 12,173评论 0 10
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,357评论 0 33
  • 初夏雨後,樹林裡的泥巴地上常會發現很多小洞洞,這就是知了猴子從地下爬出來上樹了。 等到長出來翅膀,滿樹林都是吱吱叫...
    老貓說話阅读 3,723评论 0 1
  • 家有三宝,所以很重视孩子的健康,病从口入,孩子的饮食很重要,当然病从口入也可从口除啦。 秋冬季节,孩子最容易感冒咳...
    快乐的笨小鱼阅读 3,798评论 0 0
  • 《素养》 文/六悦 无聊的聊一聊素养那些事儿,看人,识人,交人的学问很大,无论官场还是商场的还是社交,都该...
    六悦茗阅读 1,297评论 0 0

友情链接更多精彩内容