一. 题目: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.
二. 思路分析
题目大意:给定一个整数数组,找到一个元素在下标 i和j之间。
思路分析:思路比较简单,创建一个数组sum,每次累加nums的元素,即sum[i] = nums[0] + ... + nums[i - 1],最后返回 sum[j + 1] - sum[i]极为所求。代码如下:
class NumArray {
public:
NumArray(vector<int> &nums) {
sum.push_back(0);
for (int num : nums)
sum.push_back(sum.back() + num);
}
int sumRange(int i, int j) {
return sum[j + 1] - sum[i];
}
private:
vector<int> sum;
};