首页 > 解决方案 > 在数组中的前 N ​​个数字中找到最大数字的有效方法

问题描述

假设我有一个名为A的超大数组。

我想找到一个结果数组 R,它:

R[i] = max(A[i - X]:A[i + 1])

例如,A=[5,7,1,4,3,9,6,2,5,5,10],X=2。

那么结果将是 R = [5,7,7,7,4,9,9,9,6,5,10]

作为

..

R[2] = A[2-2:3] = 最大值(5,7,1) = 7

R[3] = A[3-2:4] = 最大值(7,1,4) = 7

R[4] = A[5-2:5] = 最大值(1,4,3) = 4

...

如果 A 像 100 亿个数字,而 X 像 1000,那么找到结果的最有效方法是什么?

我能想到的最好的方法就是创建一个优先级队列来存储/删除循环 A 时的最大数量。

谢谢!

标签: algorithm

解决方案


推荐阅读