对数组的一个范围求和
需求
当前有个数组
arr = [1, 6, 2, 8, 3, 5, 7, 4, 9]
有个求和方法
getSum(int[] arr,int L,int R):arr表示需要求和的数组,L和R是需要求和元素的范围
方法1
建立一个二维数组,把每个范围的结果放进去,需要时直接拿出来
LR | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|---|
0 | 1 | 7 | 9 | 17 | 20 | 25 | 32 | 36 | 45 |
1 | × | 6 | 8 | 16 | 19 | 24 | 31 | 35 | 44 |
2 | × | × | 2 | 10 | 13 | 18 | 25 | 29 | 38 |
3 | × | × | × | 8 | 11 | 16 | 23 | 27 | 36 |
4 | × | × | × | × | 3 | 8 | 15 | 19 | 28 |
5 | × | × | × | × | × | 5 | 12 | 16 | 25 |
6 | × | × | × | × | × | × | 7 | 11 | 20 |
7 | × | × | × | × | × | × | × | 4 | 13 |
8 | × | × | × | × | × | × | × | × | 9 |
这样查询是很方便,但建立二维数组时很麻烦
实现
public static class RangeSum1 {
private int[][] preSum;
public RangeSum1(int