Skip to content

Latest commit

 

History

History

303

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

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

  1. 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.

Companies: Facebook, Amazon, Bloomberg, Snowflake, Palantir Technologies

Related Topics:
Array, Design, Prefix Sum

Similar Questions:

Solution 1.

// OJ: https://leetcode.com/problems/range-sum-query-immutable
// Author: github.com/lzl124631x
// Time:
//      NumArray: O(N)
//      sumRange: O(1)
// Space: O(N)
class NumArray {
    vector<int> sum;
public:
    NumArray(vector<int>& A) : sum(A.size() + 1) {
        for (int i = 0; i < A.size(); ++i) sum[i + 1] = sum[i] + A[i];
    }
    int sumRange(int left, int right) {
        return sum[right + 1] - sum[left];
    }
};