给定一个整数数组 nums,处理以下类型的多个查询:
    计算索引 left 和 right (包含 left 和 right)之间的 nums 元素的 和 ,其中 left <= right
    实现 NumArray 类:
    NumArray(int[] nums) 使用数组 nums 初始化对象
    int sumRange(int i, int j) 返回数组 nums 中索引 left 和 right 之间的元素的 总和 ,包含 left 和 right 两点(也就是 nums[left] + nums[left + 1] + … + nums[right] )

    示例 1:
    输入:
    [“NumArray”, “sumRange”, “sumRange”, “sumRange”]
    [[[-2, 0, 3, -5, 2, -1]], [0, 2], [2, 5], [0, 5]]
    输出:
    [null, 1, -1, -3]

    解释:
    NumArray numArray = new NumArray([-2, 0, 3, -5, 2, -1]);
    numArray.sumRange(0, 2); // return 1 ((-2) + 0 + 3)
    numArray.sumRange(2, 5); // return -1 (3 + (-5) + 2 + (-1))
    numArray.sumRange(0, 5); // return -3 ((-2) + 0 + 3 + (-5) + 2 + (-1))

    1. /**
    2. * @param {number[]} nums
    3. */
    4. var NumArray = function (nums) {
    5. // 前缀和
    6. // 核心思路是我们 new 一个新的数组 preSum 出来,preSum[i] 记录 nums[0..i-1] 的累加和
    7. this.preSum = new Array(nums.length + 1).fill(0);
    8. for (let i = 0; i < nums.length; i += 1) {
    9. this.preSum[i + 1] = this.preSum[i] + nums[i];
    10. }
    11. };
    12. /**
    13. * @param {number} left
    14. * @param {number} right
    15. * @return {number}
    16. */
    17. NumArray.prototype.sumRange = function (left, right) {
    18. return this.preSum[right + 1] - this.preSum[left];
    19. };
    20. /**
    21. * Your NumArray object will be instantiated and called as such:
    22. * var obj = new NumArray(nums)
    23. * var param_1 = obj.sumRange(left,right)
    24. */

    image.png