303. Range Sum Query - Immutable

Difficulty:
Related Topics:
Similar Questions:

Problem

Given an integer array nums, handle multiple queries of the following type:

Implement the NumArray class:

  Example 1:

Input
["NumArray", "sumRange", "sumRange", "sumRange"]
[[[-2, 0, 3, -5, 2, -1]], [0, 2], [2, 5], [0, 5]]
Output
[null, 1, -1, -3]

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

  Constraints:

Solution

/**
 * @param {number[]} nums
 */
var NumArray = function(nums) {
    this.leftSum = Array(nums.length);
    for (var i = 0; i < nums.length; i++) {
        this.leftSum[i] = (this.leftSum[i - 1] || 0) + nums[i];
    }
};

/** 
 * @param {number} left 
 * @param {number} right
 * @return {number}
 */
NumArray.prototype.sumRange = function(left, right) {
    return this.leftSum[right] - (this.leftSum[left - 1] || 0);
};

/** 
 * Your NumArray object will be instantiated and called as such:
 * var obj = new NumArray(nums)
 * var param_1 = obj.sumRange(left,right)
 */

Explain:

nope.

Complexity: