对于一个长度为n的数组a[0]∼a[n−1],它的前缀和sum[i] 等于 a[0]∼a[i] 的和。例如:
sum[0] = a[0]
sum[1] = a[0]+a[1]
sum[2] =a[0]+a[1]+a[2]
...
利用递推,只要计算 n 次,就能计算出所有的前缀和:sum[i] = sum[i-1] + a[i]。
当然,我们也能用 sum[] 反推计算出 a[]:a[i] = sum[i] - sum[i-1]。
那如果我预先算出了前缀和,这时候我想知道 a[i]∼a[j] 的和,我可以怎么计算?
简单,和上面 a[i]=sum[i]-sum[i-1] 类似,
a[i] + a[i+1] + ... + a[j-1] + a[j] =sum[j]−sum[i−1]。