实时的时间序列的平均子集

时间:2017-10-20 13:52:26

标签: algorithm time financial

假设存在实时的股票价格,您如何计算其中一部分的平均值(比如过去一周)?

这是一个面试问题。我可以在O(n ^ 2)中提出一个算法,但是访问者想要一个O(n)的算法。

2 个答案:

答案 0 :(得分:2)

一种有用的方法是计算数组的累积和。

这意味着累积和数组中的每个条目都是以前所有价格的总和。

这很有用,因为您可以使用单个减法生成输入的任何特定子数组的总和。

请注意,当新输入到达时,您只需要添加一个来计算新的累积总和(因为您只需将新元素添加到旧累积总和中)。

答案 1 :(得分:0)

另一种方法类似于计算基因组学中的偏差。

如果要计算过去一周的平均值,请创建一个包含移动窗口总和的变量。创建条目时,将条目添加到上面的sum变量,并从中减去移动窗口中最旧的条目。由于窗口的大小是不变的,过去一周的平均值只是过去一周的条目数量的移动总和。