Somma cumulativa del sottoarray
Lezione 25 di 26 del corso Gli array in C++ di Coddy.
Una somma cumulativa è un array contenente tutte le somme degli elementi di un array fino a quell'indice.
Per esempio,
Arr={1,2,3,4}
per i=0 la somma cumulativa sarà 1
per i=1 la somma cumulativa sarà 1+2=3
per i=2 la somma cumulativa sarà 1+2+3=6
per i=3 la somma cumulativa sarà 1+2+3+4=10
Quindi l'array cumulativo diventa {1,3,6,10}
Un modo per calcolarla è usare due cicli annidati, calcolare la somma e memorizzarla in un array. Per esempio:
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++;
}L'altro modo, e il più efficiente, per calcolare l'array cumulativo è aggiungere l'elemento corrente alla somma precedente.
Arr={1,2,3,4}
cumArr[] è l'array cumulativo.
- cumArr[0]=1
- cumArr[1]=prev sum+Arr[1] = 1 + 2 = 3
- cumArr[2]=prev sum+Arr[2] = 3 + 3 = 6
- cumArr[3]=prev sum+Arr[1] = 6 + 4= 10
Può essere eseguito così:
int sum=0;
for(int i=0;i<n;i++){
sum=sum+arr[i];
ans[i]=sum;
}Quiz
Quale pensi che sarà la complessità temporale di entrambi questi approcci??
Provalo tu
Questa lezione non include una sfida di codice.
Tutte le lezioni di Gli array in C++
2Analisi della memoria
Allocazione della memoria8Sottoarray
IntroduzioneSottosequenzaStampa di tutti i sottoarraySottoarray con somma dataSomma cumulativa del sottoarrayAlgoritmo di KadaneEsercitati da solo: Compilatore C++ online