返回题库

滑动平均

Moving Average

专题
Algorithmic Programming / 算法编程
难度
L4

题目详情

给定长度为 mm 的数组 AA,构造长度为 mm 的数组 BB

Bi=Ain+1++Ain.B_i=\frac{A_{i-n+1}+\cdots+A_i}{n}.

要求高效实现。

Large array AA with length mm, build array of nn-element moving avg. Bi=Ain+1++Ain.B_i = \frac{A_{i-n+1} +\dots+ A_i}{n}.

解析

维护滚动和:

S = A[1]+...+A[n];
B[n] = S/n;
for(i=n+1; i<=m; i++){
  S = S - A[i-n] + A[i];
  B[i] = S/n;
}

时间复杂度 O(m)O(m)


Original Explanation

Use the previous sum:

S = A[1]+...+A[n];
B[n] = S/n;
for(i=n+1; i<=m; i++){
    S = S - A[i-n] + A[i];
    B[i] = S/n;
}

Time O(m)O(m).