【发布时间】:2015-09-28 02:46:18
【问题描述】:
我需要一种快速的方法来检查二维数组是否完全相邻,这意味着所有值都与其他相同的值相邻。相邻的意思是四个主要方向。
This would be an adjacent array
[1 1 2]
[1 2 2]
[3 3 3]
This isn't
[1 2 1]
[1 2 2]
[3 3 3]
This is
[1 2 4]
[1 2 2]
[3 3 3]
到目前为止,我已经尝试了一种 O(M * N) 方法,在该方法中我遍历整个数组并检查是否至少有一个邻居是相同的值。我正在寻找一种可能更快的方法。
编辑:刚刚注意到我的方法甚至无法正常工作。例如:
This should fail (not all of the 1s are adjacent)
[1 2 1]
[1 2 1]
[3 3 3]
所以现在我需要一个实际的算法。
【问题讨论】:
-
我不认为你可以比这里的 O(width*height) 做得更好。至少,您需要访问每个单元至少两次。
-
我们在谈论哪些维度?您想将此算法应用于 50x50 或更大的数组吗?
-
@TimHallyburton 很小。最大约 10x10
标签: algorithm matrix multidimensional-array