题目描述
给定一个整数数组 Array,请计算该数组在每个指定区间内元素的总和。
输入描述
第一行输入为整数数组 Array 的长度 n,接下来 n 行,每行一个整数,表示数组的元素。随后的输入为需要计算总和的区间,直至文件结束。
输出描述
输出每个指定区间内元素的总和。
输入示例
5
1
2
3
4
5
0 1
1 3
输出示例
3
9
数据范围:
0 < n <= 100000
解答
采用前缀和的思想,在数组Array之外再设置一个数组p,p[i]则是Array[0]到Array[i]之间的总和,这样的话,要计算区间总和,就可以利用p[b]-p[a]+Array[a]的公式,例如p[5]-p[2]+Array[2]就等于区间2到5之间的元素总和。
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scan=new Scanner((System.in));
int n=scan.nextInt();
int[] nums=new int[n];
int[] p=new int[n];
int sum=0;
for(int i=0;i<n;i++){
nums[i]=scan.nextInt();
sum+=nums[i];
p[i]=sum;
}
while(scan.hasNextInt()){
int a=scan.nextInt();
int b=scan.nextInt();
int result=p[b]-p[a]+nums[a];
System.out.println(result);
}
}
}