Skip to content
Leetcode
Esc
↑↓navigate↵open⌘Jpreview
On this page

303. Range Sum Query - Immutable

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

Array

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 <= 10^4
  • -10^5 <= nums[i] <= 10^5
  • 0 <= left <= right < nums.length
  • At most 10^4 calls will be made to sumRange.

Approach

Solution

/**
 * @param {number[]} nums
 */
class NumArray {
    constructor(nums) {
      this.prefix = [0];
      for (let n of nums){
        this.prefix.push(this.prefix[this.prefix.length - 1] + n);
      }
    }
    /**
     * @param {number} left
     * @param {number} right
     * @return {number}
     */
    sumRange(left, right) {
        return this.prefix[right + 1] - this.prefix[left];
    }
}


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

Explanation

Last updated on September 24, 2026

Was this page helpful?