【发布时间】:2019-12-11 10:24:12
【问题描述】:
假设您给出了一个包含值(0 或 1)的二维数组。
计算给定数组中相邻 1 组的总数。
示例 1:
1, 0, 0
0, 0, 0
0, 0, 1
答案:2
解释:在上面的例子中,单个 1 的块也被认为是一组。
示例 2:
1, 1, 0, 1, 1, 0
0, 1, 0, 0, 0, 1
0, 1, 0, 1, 1, 0
0, 1, 1, 0, 0, 0
答:1
说明:在上面的例子中,一组 1 的块与至少一个 1 的块相邻。
我的解决方案:https://play.golang.org/p/nyw4lm6yrQ1
但是看起来,时间复杂度是O(n^2)
【问题讨论】:
-
您需要检查每个单元格至少一次,并且已经是宽度*高度,有什么问题?
-
看起来像洪水填充算法。
-
@juvian 感谢您的解释。我已经尝试过了,但是你有没有最好的优化解决方案来实现这个?
-
@WillemVanOnsem 是一位面试官问的。
-
采用类似 DFS(深度优先搜索)的方法。
标签: algorithm go optimization multidimensional-array data-structures