package bsum;
/**
* @author 真他喵的学不动咯
* @create 2022-08-06--10:00
*/
public class preS { //求数组某范围的和
//定义属性
int[] preSum;
//定义前缀和数组
public void presum(int[] arr){//输入形参为一个int[] arr数组,
int N=arr.length;//定义数组总长
preSum=new int[N];//重新new有个前缀和数组,相当于H[]
preSum[0]=arr[0];//把arr[]的一个元素赋给H[]数组
for(int i=1;i<N;i++){//开始加
preSum[i]=preSum[i-1]+arr[i];//形成前缀和数组
}
}
//定义截取某范围的和
public int rangSum(int L,int R){
return (L==0)? preSum[R]:preSum[R]-preSum[L-1];
}
}
以下为测试类
package bsum;
/**
* @author 真他喵的学不动咯
* @create 2022-08-06--10:04
*/
public class preStest {
public static void main(String[] args){
int[] arr={45,12,32,12,1,78,95,63};
preS P1=new preS();
P1.presum(arr);
System.out.println(P1.rangSum(2,5));
System.out.println("*******************************");
System.out.println(P1.rangSum(0,3));
}
}