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

Algorithm 实时时间序列的平均子集,algorithm,time,financial,Algorithm,Time,Financial,假设有一个实时的股票价格反馈,你如何计算它的一个子集的平均值(比如说过去一周) 这是一个面试问题。我可以想出一个用O(n^2)表示的算法,但是面试官想要一个O(n)表示的算法 一种有用的方法是计算数组的累积和 这意味着累积和数组中的每个条目都是以前所有价格的总和 这很有用,因为您可以使用单个减法在输入的任何特定子数组上生成和 请注意,当一个新输入到达时,您只需要进行一次加法即可计算新的累积和(因为您只需将新元素添加到旧的累积和中) 一种有用的方法是计算数组的累积和 这意味着累积和数组中的每个条目

假设有一个实时的股票价格反馈,你如何计算它的一个子集的平均值(比如说过去一周)


这是一个面试问题。我可以想出一个用O(n^2)表示的算法,但是面试官想要一个O(n)表示的算法

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

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

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


请注意,当一个新输入到达时,您只需要进行一次加法即可计算新的累积和(因为您只需将新元素添加到旧的累积和中)

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

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

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


请注意,当一个新输入到达时,您只需要进行一次加法即可计算新的累积和(因为您只需将新元素添加到旧的累积和中)

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


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

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


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

有趣的概念。您的意思是创建另一个数组,该数组的条目数与股票价格相同,但值包含累计和?这样,如果我想计算过去一周的总和,我所要做的就是取累积总和数组的最新值,然后用一周前对应的值减去它,然后对条目数求平均值。谢谢。这是一个不错的方法,但需要一些维护机制来处理最终的溢出(你不能永远添加)。@Amit好的观点:如果你将价格缩放为整数,你可以使用标准的环绕算法,它应该计算出正确的答案(如果总和符合数据类型的大小)有趣的概念。您的意思是创建另一个数组,该数组的条目数与股票价格相同,但值包含累计和?这样,如果我想计算过去一周的总和,我所要做的就是取累积总和数组的最新值,然后用一周前对应的值减去它,然后对条目数求平均值。谢谢。这是一个很好的方法,但需要一些维护机制来处理最终的溢出(你不能永远添加)。@Amit好的观点:如果你将价格缩放为整数,你可以使用标准的环绕算法,它应该计算出正确的答案(如果总和符合数据类型的大小)