303. Range Sum Query

303. Range Sum Query

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:

  1. You may assume that the array does not change.
  2. There are many calls to sumRange function.

区间求和

C++(166ms):

 1 class NumArray {
 2 public:
 3     NumArray(vector<int> nums) {
 4         int sum = 0 ;
 5         for(int n : nums){
 6             sum += n ;
 7             res.push_back(sum) ;
 8         }
 9     }
10     
11     int sumRange(int i, int j) {
12         if (i == 0)
13             return res[j] ;
14         else
15             return res[j] - res[i-1] ;
16     }
17 private:
18     vector<int> res;
19 };
20 
21 /**
22  * Your NumArray object will be instantiated and called as such:
23  * NumArray obj = new NumArray(nums);
24  * int param_1 = obj.sumRange(i,j);
25  */

Java(150ms):

 1 class NumArray {
 2 
 3     int[] res ;
 4     public NumArray(int[] nums) {
 5         for(int i = 1; i < nums.length ; i++){
 6             nums[i] += nums[i-1] ;
 7         }
 8         this.res = nums ;
 9     }
10     
11     public int sumRange(int i, int j) {
12         if (i == 0)
13             return res[j] ;
14         else
15             return res[j] - res[i-1] ;
16     }
17 }
18 
19 /**
20  * Your NumArray object will be instantiated and called as such:
21  * NumArray obj = new NumArray(nums);
22  * int param_1 = obj.sumRange(i,j);
23  */