我有几百万个数字的数组.
double* const data = new double (3600000);
Run Code Online (Sandbox Code Playgroud)
我需要迭代数组并找到范围(数组中的最大值减去最小值).然而,有一个问题.我只想找到最小值和最大值在1000个样本之间的范围.
所以我需要找到最大值:范围(数据+ 0,数据+ 1000),范围(数据+ 1,数据+ 1001),范围(数据+ 2,数据+ 1002),....,范围(数据) + 3599000,数据+ 3600000).
我希望这是有道理的.基本上我可以像上面那样做,但我正在寻找一个更有效的算法,如果存在的话.我认为上面的算法是O(n),但我觉得可以优化.我正在玩的一个想法是跟踪最近的最大值和最小值以及它们的返回距离,然后在必要时才回溯.
我将用C++编写它,但伪代码中的一个很好的算法就可以了.另外,如果我想找的这个号码有一个名字,我很想知道它是什么.
谢谢.
可能重复:
检查2个数组是否与I相加
我的问题是我有一个给定的数字no=10;假设和一个数组A,我必须找到那些没有谁的差异是给定的没有.例如: - A[5]-A[3]=10;然后打印print(A[5]); Print(A[5])
我有一个算法,O(n^2)及时做到但我们需要更好的东西...
我的直觉可能是在做短暂的数组之后做的事情.....但是如何...因为在做空之后还需要两个循环来检查那个条件......
我有点困惑......