image.png
    数据结构都是由 连续+跳转组成

    数据结构累加和
    image.png
    这种方法占用户空间比较大 n*n

    前缀和数组
    image.png
    help数组每个位置的值 是原数组位置值 与之前位置值的累加和

    例如 求数组3-7范围的累加和 查出俩个数的值 相减
    image.png
    边界范围控制好
    image.png

    1. public static class RangeSum2 {
    2. private int[] preSum;
    3. public RangeSum2(int[] array) {
    4. int N = array.length;
    5. preSum = new int[N];
    6. preSum[0] = array[0];
    7. for (int i = 1; i < N; i++) {
    8. preSum[i] = preSum[i - 1] + array[i];
    9. }
    10. }
    11. public int rangeSum(int L, int R) {
    12. return L == 0 ? preSum[R] : preSum[R] - preSum[L - 1];
    13. }
    14. }

    如果查询达到巨大无比 十几亿次 第一种好 不用减 可以直接拿到值