58. 区间和 前缀和
前缀和
思路
前缀和的思想是重复利用计算过的子数组之和,从而降低区间查询需要累加计算的次数。
适用场景:前缀和在涉及计算区间和的问题时非常有用!
import java.util.Scanner;
public class Main {
public static void main (String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[] vec = new int[n];
int[] p = new int[n];
for(int i = 0; i < n; i++) {
vec[i] = scanner.nextInt();
}
// 求前缀和数组 p
p[0] = vec[0];
for (int i = 1; i < n; i++) {
p[i] = p[i - 1] + vec[i];
}
// 输出指定区间元素和
while (scanner.hasNextInt()) {
int a = scanner.nextInt();
int b = scanner.nextInt();
int sum = 0;
if (a == 0) {
sum = p[b];
} else {
sum = p[b] - p[a - 1];
}
System.out.println(sum);
}
scanner.close();
}
}
进阶
多维前缀和