前缀和数组

// 前缀和数组preSum[]:preSum[i]记录nums[0,i-1]区间的累加和
class ex_preSum{
    private:
        vector<int> preSum;
    public:
        ex_preSum(vector<int> nums){
            preSum.resize(nums.size()+1);
            
            // 原数组下标[0,n-1]。preSum数组下标[0,n],其中preSum[0]=0,从preSum[1]开始。

            // preSum[i] = preSum[i-1]+nums[i-1];
            preSum[0] = 0;
            for(int i=1;i<preSum.size();i++){
                // nums[i-1]的原因:因为此处这个i是preSum的下标,而preSum的下标=nums的位序,要取nums第i个元素值时就要通过nums[i-1]取
                preSum[i] = preSum[i-1]+nums[i-1];
            }
        }
        int deal(int startIdx,int endIdx){
            int t = preSum[endIdx+1] - preSum[startIdx];
            return t; 
        }
        bool test_deal(){
            vector<int> nums{0,1,2,3,4,5};
            return ex_preSum(nums).deal(3,5) == 12;
        }
};

 

posted @ 2024-05-30 20:13  _titleInfo  阅读(4)  评论(0编辑  收藏  举报
//雪花飘落效果