前缀和cpp
#include <iostream>
using namespace std;
const int N=100010;
int a[N], s[N];
int n,m,l,r;
int main()
{
scanf("%d%d", &n,&m);
for(int i=1; i <= n; i ++) scanf("%d", &a[i]);
for(int i=1; i <=n; i++) s[i] = s[i-1] + a[i];
while(m--) {
scanf("%d%d", &l, &r);
printf("%d\n", s[r]-s[l-1]);
}
return 0;
}
辅助空间$O(n)$,s
为前缀和数组。
#include <iostream>
using namespace std;
const int N=100010;
int a[N];
int n, m, l, r;
int main()
{
scanf("%d%d", &n, &m);
for(int i = 1; i <= n; i ++) scanf("%d", &a[i]);
for(int i = 1; i <= n; i ++) a[i] += a[i-1];
while(m--){
scanf("%d%d", &l, &r);
printf("%d\n", a[r] - a[l-1]);
}
return 0;
}
空间$O(1)$