繁体   English   中英

计算python中二维数组中相邻相等元素的数量

[英]Count the number of adjacent equal elements in 2d array in python

我试图在二维数组中找到一些相邻的元素。 当我说相邻时,我的意思是水平和垂直。

例如:

[[1, 2, 1, 3],
 [2, 1, 3, 1],
 [3, 2, 3, 1],
 [2, 3, 2, 1]]

该数组的结果将是 5,因为一直向右的三个 1 + 中间的两个 3 彼此相邻。 假设给定的二维数组可以比我在此处给出的示例大,那么实现这一目标最耗时的方法是什么?

谢谢你。

这个问题类似于流行的计算岛屿数量的问题。 通常,计数岛问题表示为 0 和 1 的矩阵。 例如

[
[0 1 0],
[1 1 0],
[0 1 0],
]

因此,从那里开始,您可以执行 BFS 来计算相似(相等)的相邻数字而不是 1。

波纹管只是问题的简化

A = [[]]
visited = [[]] // matrix of booleans, contains the already visited i,j
for i in range(1, len(mat)):
    for j in range(1, len(mat[i])):
       BFS(A[i][j], A, i, j, visited)

然后,

func BFS(target, matrix, i, j, visited):
   // do the normal island count logic, but using "target" instead of 1s

参考

https://leetcode.com/problems/number-of-islands/

https://www.techiedelight.com/count-the-number-of-islands/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM