[leetcode]303. Range Sum Query - Immutable

[leetcode]303. Range Sum Query - Immutable


Analysis

周五啦,端午小长假要开始啦~—— [嘻嘻~]

Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive.
题目意思比较简单,就是给定数组的一个区间,求区间内元素之和。但是题目说这个求和函数会调用很多次,而且他还给了构造函数,可见并不能每次求和都计算一次,这样毫无疑问会爆掉。所以应该在构造函数里面吧所有的和都求一遍,就是r_num[k+1]表示前k个数的和,这样给定区间i,j之后,就可以直接把r_num[j+1]-r_num[i]就可以得到结果了。这里k+1表示前k个和是怕数组越界,因为会有i-1=-1之类的边界条件。

Implement

class NumArray {
public:
    vector<int> r_sum;
    NumArray(vector<int> nums) {
        int sum = 0;
        r_sum.push_back(sum);
        for(int i=0; i<nums.size(); i++){
            sum += nums[i];
            r_sum.push_back(sum);
        }
    }

    int sumRange(int i, int j) {
        return r_sum[j+1]-r_sum[i];
    }
};

/**
 * Your NumArray object will be instantiated and called as such:
 * NumArray obj = new NumArray(nums);
 * int param_1 = obj.sumRange(i,j);
 */

猜你喜欢

转载自blog.csdn.net/weixin_32135877/article/details/80705770
今日推荐