Skip to content

Files

Latest commit

df23c5e · Sep 5, 2023

History

History
93 lines (60 loc) · 1.98 KB

303. Range Sum Query - Immutable.md

File metadata and controls

93 lines (60 loc) · 1.98 KB

303. Range Sum Query - Immutable

  • Difficulty: Easy.
  • Related Topics: Array, Design, Prefix Sum.
  • Similar Questions: Range Sum Query 2D - Immutable, Range Sum Query - Mutable, Maximum Size Subarray Sum Equals k.

Problem

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

  • Calculate the sum of the elements of nums between indices left and right inclusive where left <= right.

Implement the NumArray class:

  • NumArray(int[] nums) Initializes the object with the integer array nums.

  • int sumRange(int left, int right) Returns the sum of the elements of nums between indices left and right inclusive (i.e. nums[left] + nums[left + 1] + ... + nums[right]).

  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:

  • 1 <= nums.length <= 104

  • -105 <= nums[i] <= 105

  • 0 <= left <= right < nums.length

  • At most 104 calls will be made to sumRange.

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:

  • Time complexity : O(1).
  • Space complexity : O(n).