Algorithm 给定一个2d数组,找到;“洞”;
标识完全由1包围的0(不需要对角覆盖)。在下面的示例中,大小应为3 二维阵列中可能有任意数量的“孔”Algorithm 给定一个2d数组,找到;“洞”;,algorithm,Algorithm,标识完全由1包围的0(不需要对角覆盖)。在下面的示例中,大小应为3 二维阵列中可能有任意数量的“孔” [[1,0,1,1], [1,1,1,1], [1,0,0,1], [1,0,1,1], [1,1,1,0]] 注意:我在这里看到了一个问题:,但我对这里的答案不是很满意。你的“洞”实际上是由网格形成的图形中零的连接组件。每个元素有四个邻居。用或查找,选择最大的一个,或将其汇总。该算法适用于O(N),其中N是矩阵中的元素数 您还可以使用更具体的,适用于这些类型的图形,通常从图像中显示。
[[1,0,1,1],
[1,1,1,1],
[1,0,0,1],
[1,0,1,1],
[1,1,1,0]]
注意:我在这里看到了一个问题:,但我对这里的答案不是很满意。你的“洞”实际上是由网格形成的图形中零的连接组件。每个元素有四个邻居。用或查找,选择最大的一个,或将其汇总。该算法适用于O(N)
,其中N
是矩阵中的元素数
您还可以使用更具体的,适用于这些类型的图形,通常从图像中显示。标签还将为您枚举所有连接的组件
如果您对连接的组件不感兴趣,这些组件并没有完全被连接的组件包围,例如:
[[1,0,1,1],
[1,1,1,1],
[1,0,0,1],
[0,0,1,1], // <-- Note zero in the beginning
[1,1,1,0]]
[[0,0,0,0,0,0]
[0,1,0,1,1,0],
[0,1,1,1,1,0],
[0,1,0,0,1,0],
[0,0,0,1,1,0],
[0,1,1,1,0,0],
[0,0,0,0,0,0]]
然后忽略外部连接的组件。在本例中,没有更多组件,因此答案为零。您可以使用简单DFS查找孔,如下所示:-
在这个例子中它是怎样的3?你所说的“不需要对角线覆盖”是什么意思?这些孔的形状可能不规则。你如何决定哪一个是对角单元格?@yifanwu什么是大小?零孔计数?或者周长大小或者边界框最大的大小或者是什么?顺便说一句,链接的问题和你的问题不一样,它适用于大型数据集,这些数据集的点与矩阵中的点不完全相同,而是具有有限的精度,作为实际测量的浮点坐标!只需在图像中添加标签,即所谓的分割(在本例中为二值图像)