自学内容网 自学内容网

力扣-数组-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);
 */


原文地址:https://blog.csdn.net/qq_45964225/article/details/145228529

免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!