获取数组中连续元素之间的绝对差,然后返回哪个差最大

时间:2019-02-22 22:12:49

标签: java algorithm data-structures

因此,如果有一个像[2、3、5、7、11]的数组,则差异将为1、2、2、4,因此您将返回2。

蛮力只是迭代初始结构,将每个计算出的差异存储在新结构中,并计算该新结构中元素出现次数最多。

我想知道是否有其他更好的方法可以做到这一点,或者该解决方案是否被认为是有效的?

1 个答案:

答案 0 :(得分:2)

如果“正确”实施,该解决方案将是有效的。如果您使用的是向量数组类型的包,请使用shift操作来获取差值向量。不论是否进行矢量化,该值为 O(N)

第二遍线性查找将找到阵列的模式,得出最终答案。保留一个简单的数组以计算每个值出现多少次:

for item in diff_array:
    mode_ct[item] += 1

然后找到mode_ct的最大值;返回其索引。