子数组的累积和
Coddy C++ 数组 课程的第 25 课,共 26 课。
累积和数组是一个数组,其中的每个值都是原数组截至对应索引处的所有元素之和。
例如,
Arr={1,2,3,4}
当 i=0 时,累积和为 1
当 i=1 时,累积和为 1+2=3
当 i=2 时,累积和为 1+2+3=6
当 i=3 时,累积和为 1+2+3+4=10
所以,累积和数组变为 {1,3,6,10}
一种计算方法是使用两个嵌套循环来计算总和,并将其存储在数组中。例如:
int k=0;
while(k<n){
int sum=0;
for(int j=0;j<k+1;j++){
sum=sum+arr[j];
}
ans[k]=sum;
k++;
}另一种也是最高效的计算累积和数组的方法,是将当前元素加到前一个总和上。
Arr={1,2,3,4}
cumArr[] 是累积和数组。
- cumArr[0]=1
- cumArr[1]=前一个总和+Arr[1] = 1 + 2 = 3
- cumArr[2]=前一个总和+Arr[2] = 3 + 3 = 6
- cumArr[3]=前一个总和+Arr[1] = 6 + 4= 10
可以这样实现:
int sum=0;
for(int i=0;i<n;i++){
sum=sum+arr[i];
ans[i]=sum;
}脑筋急转弯
你认为这两种方法的时间复杂度分别是多少??
亲手试试
这节课没有代码挑战。
C++ 数组中的所有课
自己练习: C++ 在线编译器