假设存在实时的股票价格,您如何计算其中一部分的平均值(比如过去一周)?
这是一个面试问题。我可以在O(n ^ 2)中提出一个算法,但是访问者想要一个O(n)的算法。
答案 0 :(得分:2)
一种有用的方法是计算数组的累积和。
这意味着累积和数组中的每个条目都是以前所有价格的总和。
这很有用,因为您可以使用单个减法生成输入的任何特定子数组的总和。
请注意,当新输入到达时,您只需要添加一个来计算新的累积总和(因为您只需将新元素添加到旧累积总和中)。
答案 1 :(得分:0)
另一种方法类似于计算基因组学中的偏差。
如果要计算过去一周的平均值,请创建一个包含移动窗口总和的变量。创建条目时,将条目添加到上面的sum变量,并从中减去移动窗口中最旧的条目。由于窗口的大小是不变的,过去一周的平均值只是过去一周的条目数量的移动总和。