参考文献
区域检索,前缀和的应用,注意下标的映射,前缀和一般从1开始
C++ 代码
class NumArray {
public:
vector<int> prefix_sum_;
NumArray(vector<int>& nums) {
int n = nums.size();
// 下标从1开始
prefix_sum_ = vector(n+1, 0);
for(int i=1; i<=n; ++i)prefix_sum_[i] = prefix_sum_[i-1] + nums[i-1];
}
int sumRange(int left, int right) {
++left, ++right;
return prefix_sum_[right] - prefix_sum_[left-1];
}
};
/**
* Your NumArray object will be instantiated and called as such:
* NumArray* obj = new NumArray(nums);
* int param_1 = obj->sumRange(left,right);
*/