mirror of
https://github.com/prdlk/leetcode.git
synced 2026-09-17 07:26:27 +00:00
feat(easy): add range sum query implementation for immutable arrays
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
* 303. Range Sum Query - Immutable
|
||||
* Difficulty: Easy
|
||||
* https://leetcode.com/problems/range-sum-query-immutable/
|
||||
*
|
||||
* ──────────────────────────────────────────────────
|
||||
*
|
||||
* 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 <= 10^4
|
||||
*
|
||||
* • -10^5 <= nums[i] <= 10^5
|
||||
*
|
||||
* • 0 <= left <= right < nums.length
|
||||
*
|
||||
* • At most 10^4 calls will be made to sumRange.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @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)
|
||||
*/
|
||||
Reference in New Issue
Block a user