LeetCode:区域和检索

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

给定一个整数数组 nums,求出数组从索引 *i *到 j (ij) 范围内元素的总和,包含 *i, j *两点。
示例:
给定 nums = [-2, 0, 3, -5, 2, -1],求和函数为 sumRange()
sumRange(0, 2) -> 1
sumRange(2, 5) -> -1
sumRange(0, 5) -> -3

class NumArray {
public:
    vector<int> dp;
    NumArray(vector<int>& nums) {
        if(nums.size()>0)  //输入为空
        {
            int n=nums.size();
            dp.resize(n,0);
            dp[0]=nums[0];
            for(int i=1;i<n;++i)
            {
                dp[i]=dp[i-1]+nums[i];
            }
        }
    }
    
    int sumRange(int i, int j) {
        return i==0?dp[j]:dp[j]-dp[i-1];
    }
};
/**
 * Your NumArray object will be instantiated and called as such:
 * NumArray* obj = new NumArray(nums);
 * int param_1 = obj->sumRange(i,j);
 */
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容