[LeetCode][JavaScript]Range Sum Query - Immutable
Range Sum Query - Immutable
Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive.
Example:
Given nums = [-2, 0, 3, -5, 2, -1] sumRange(0, 2) -> 1 sumRange(2, 5) -> -1 sumRange(0, 5) -> -3
Note:
- You may assume that the array does not change.
- There are many calls to sumRange function.
https://leetcode.com/problems/range-sum-query-immutable/
求和,给定数组不会变,求和方法会反复调用多次。
维护一个数组,第n个值就是从0到n的和。
比如求2到5的和,就是0到5的和减去0到1的和。
1 /** 2 * @constructor 3 * @param {number[]} nums 4 */ 5 var NumArray = function(nums) { 6 this.dict = []; 7 var sum = 0; 8 for(var i = 0; i < nums.length; i++){ 9 sum += nums[i]; 10 this.dict[i] = sum; 11 } 12 }; 13 14 /** 15 * @param {number} i 16 * @param {number} j 17 * @return {number} 18 */ 19 NumArray.prototype.sumRange = function(i, j) { 20 if(i === 0){ 21 return this.dict[j]; 22 }else{ 23 return this.dict[j] - this.dict[i - 1]; 24 } 25 };