java - 获取数组中连续元素之间的绝对差值,并返回出现最多的差值
问题描述
因此,如果有一个像 [2, 3, 5, 7, 11] 这样的数组,则差异将是 1, 2, 2, 4,因此您将返回 2。
蛮力将只是迭代初始结构,将每个计算的差异存储在新结构中,并计算该新结构中元素出现的最多次数。
我想知道是否有其他更好的方法可以做到这一点,或者该解决方案是否被认为是有效的?
解决方案
如果“正确”实施,该解决方案将是有效的。如果您正在使用具有矢量化数组类型的包,则使用该shift
操作来获取差异向量。这是O(N)有或没有矢量化。
第二次线性传递将找到阵列的模式,产生最终答案。保留一个简单的数组来计算每个值出现的次数:
for item in diff_array:
mode_ct[item] += 1
然后找到最大值mode_ct
;返回它的索引。
推荐阅读
- javascript - 在 CircleCI 上的 Nightwatch 测试期间选择要上传的文件(图像)
- javascript - x Time 后一个接一个地运行 JavaScript 函数
- python - TensorFlow批量归一化,维度错误
- python - TensorFlow 通过数组索引将张量分配给张量
- google-sheets-api - 如何使用 Google Sheets API 添加超链接?
- node.js - 即使设置了 ACL,也无法公开共享文件对象
- c++ - 来自输入文件的 Qt 串行端口通信;奇怪的行为
- c - 位运算符错误输出
- c# - 如果数量 <= 0,则将缺货消息传递给查看
- c# - 在 ASP.NET Core 中路由静态文件