我有以下C ++数组:int arr[20][20]
填充了1到5之间的数字
特定元素,例如arr [5] [8]被设置为起点
我必须找到数组中的所有元素,它们具有相同的值并且是“触摸”(vert / horiz)起点
我可以通过三个for循环搜索数组,但是这会导致20 * 20 + 20 * 2 = 1600个数组的位移
我希望我能够很好地解释这个问题,以便你理解
i.stack.imgur.com/j3e0e.jpg
应找到所有红色标记的元素
答案 0 :(得分:0)
如果使用Union Find算法,可以使用接近线性的时间。 看看这个: http://algs4.cs.princeton.edu/15uf/UF.java.html