Idea
需计算数组nums在下标right 和 left-1 的前缀和,然后计算两个前缀和的差即可。
需要注意的是,当left为0的时候,如果还是left-1则会发生数组访问越界错误。
AC Code
class NumArray {
public:
vector<int> sum;
NumArray(vector<int>& nums) {
int n = nums.size();
sum.resize(n);
sum[0] = nums[0];
for(int i = 1; i < n; i++) {
sum[i] = sum[i - 1] + nums[i];
}
}
int sumRange(int left, int right) {
return sum[right] - (left > 0 ? sum[left - 1] : 0);
}
};