这题直接使用for循环累加会超时

我们应当使用前缀和数组来做

当输入数据的时候,我们就可以把数组预处理好

这里的sum数组长度应当为n+1,因为要保留sum[0]为前0个元素,也就是0

最后输出sum[r]-sum[l-1]即可



import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner=new Scanner(System.in);
		int n=scanner.nextInt();
		int q=scanner.nextInt();
		long a[]=new long[n];
		long sum[]=new long[n+1];
		for (int i = 0; i < a.length; i++) {
			a[i]=scanner.nextLong();
			sum[i+1]=sum[i]+a[i];
		}
		
		while(q-->0) {
			int l=scanner.nextInt();
			int r=scanner.nextInt();
			System.out.println(sum[r]-sum[l-1]);
		}

	}

}