795. 前缀和

83 阅读1分钟

795. 前缀和 - AcWing题库

Concepts Explanation

Prefix Sum

  • Definition: Prefix sum refers to the cumulative sum of elements in an array up to a certain index.
  • Calculation: If the array is arr, then the prefix sum array is prefix_sum, where prefix_sum[i] = arr[0] + arr[1] + ... + arr[i].
  • Application: Prefix sums are commonly used to efficiently compute the sum of elements within a given range in constant time.

Question

Content

输入一个长度为 n 的整数序列。

接下来再输入 m 个询问,每个询问输入一对 l ,r。

对于每个询问,输出原序列中从第 l 个数到第 r 个数的和。

输入格式

第一行包含两个整数 n 和 m。

第二行包含 n 个整数,表示整数数列。

接下来 m 行,每行包含两个整数 l 和 r,表示一个询问的区间范围。

输出格式

共 m 行,每行输出一个询问的结果。

数据范围

1 ≤ l ≤ r ≤ n,

1 ≤ n,m ≤ 100000,

−1000 ≤ 数列中元素的值 ≤ 1000

输入样例:

5 3
2 1 3 6 4
1 2
1 3
2 4

输出样例:

3
6
10

Solution

Java

import java.util.Scanner;
import java.util.stream.IntStream;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int n = scanner.nextInt();
        int m = scanner.nextInt();
        int[] arr = IntStream.range(0, n).map(i -> scanner.nextInt()).toArray();

        int[] sums = new int[n + 1];
        for (int i = 1; i < n + 1; i++) {
            sums[i] = sums[i - 1] + arr[i - 1];
        }

        while (m-- > 0) {
            int l = scanner.nextInt();
            int r = scanner.nextInt();

            System.out.println(sums[r] - sums[l - 1]);
        }
    }

}

Summary

Efficiently computes and prints subarray sums based on prefix sums for given array and query ranges.