因此,如果有一个像[2、3、5、7、11]的数组,则差异将为1、2、2、4,因此您将返回2。
蛮力只是迭代初始结构,将每个计算出的差异存储在新结构中,并计算该新结构中元素出现次数最多。
我想知道是否有其他更好的方法可以做到这一点,或者该解决方案是否被认为是有效的?
答案 0 :(得分:2)
如果“正确”实施,该解决方案将是有效的。如果您使用的是向量数组类型的包,请使用shift
操作来获取差值向量。不论是否进行矢量化,该值为 O(N)。
第二遍线性查找将找到阵列的模式,得出最终答案。保留一个简单的数组以计算每个值出现多少次:
for item in diff_array:
mode_ct[item] += 1
然后找到mode_ct
的最大值;返回其索引。