首页 > 解决方案 > 获取数组中连续元素之间的绝对差值,并返回出现最多的差值

问题描述

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

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

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

标签: javaalgorithmdata-structures

解决方案


如果“正确”实施,该解决方案将是有效的。如果您正在使用具有矢量化数组类型的包,则使用该shift操作来获取差异向量。这是O(N)有或没有矢量化。

第二次线性传递将找到阵列的模式,产生最终答案。保留一个简单的数组来计算每个值出现的次数:

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

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


推荐阅读