Bootstrap

力扣-数组-303 区域和检索-数组不可变

解析

题目有点费解,大致应该是给出区间内的和,然后维护一个前缀和,为了防止越界,先填一个0进去,在构建的时候也要注意此时构建的dp的下标是i+1,所以加的前缀和的下标是i。

代码

class NumArray {
public:
    vector <int> dp;
    NumArray(vector<int>& nums) {
        dp.push_back(0);
        for(int i = 0; i< nums.size(); i++){
            if(i == 0){
                dp.push_back(nums[0]);
            }else{
                dp.push_back(nums[i] + dp[i]);
            }
        }
    }
    
    int sumRange(int left, int right) {
        return dp[right+1] - dp[left]; 
    }
};

/**
 * Your NumArray object will be instantiated and called as such:
 * NumArray* obj = new NumArray(nums);
 * int param_1 = obj->sumRange(left,right);
 */

;