基础算法

01.前缀和

概念:前缀和是指在一个数列中,以某个数字作为前缀的数字和

一维数组一维前缀和数组模板
  sum[0]=arr[0];           i=0
  sum[i]=sum[i-1]+arr[i];  i>0

int arr[5] = {2,3,5,7,11};
  int sum[5];
  for(int i = 0;i < 5;i++)
  {
          if(i == 0)
              sum[i] = arr[i];
          else
              sum[i] = sum[i-1] + arr[i];
  }
  //输出sum数组验证
  for(int i = 0;i < 5;i++)
      cout << sum[i] << " ";    //输出2 5 10 17 28

作用:求区间[l,r]内的数组和

区间[l,r]的和 = arr[l]+arr[l+1]+...arr[r-1]+arr[r];

sum[r]-sum[l-1] = sum[0]+sum[1]+...sum[l-2]+sum[l-1]+sum[l]+...sum[r]
                - sum[0]+sum[1]+...sum[l-2]+sum[l-1]
                =sum[l]+...sum[r]
由此可得,当求一个数组在区间[l,r]内的和,我们可以用它的前缀和和数组快速得出答案

你可能感兴趣的:(程序员算法)