vector< int >nums;//原数组
int n = nums.size();
//前缀和数组
vector<int>presum(n+1,0);//presum[i]代表[0,i-1]的和。所以presum[0]没有意义,不用管。
for (int i = 0; i < n; i++){
presum[i + 1] = presum[i] + nums[i];
}
所以nums[i]到nums[j]的和就是presum[j+1]-presum[i]。
计算整数数组子和的前缀和技巧
本文介绍了如何使用C++中的vector和前缀和数组计算整数数组中任意子数组的和,通过presum数组存储前缀和,使得求和操作简化为presum[j+1]-presum[i]。
vector< int >nums;//原数组
int n = nums.size();
//前缀和数组
vector<int>presum(n+1,0);//presum[i]代表[0,i-1]的和。所以presum[0]没有意义,不用管。
for (int i = 0; i < n; i++){
presum[i + 1] = presum[i] + nums[i];
}
所以nums[i]到nums[j]的和就是presum[j+1]-presum[i]。
3993
875
135

被折叠的 条评论
为什么被折叠?