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

Idea

需计算数组nums在下标right 和 left-1 的前缀和,然后计算两个前缀和的差即可。
需要注意的是,当left为0的时候,如果还是left-1则会发生数组访问越界错误。

AC Code

class NumArray {
public:
    vector<int> sum;
    NumArray(vector<int>& nums) {
        int n = nums.size();
        sum.resize(n);
        sum[0] = nums[0];
        for(int i = 1; i < n; i++) {
            sum[i] = sum[i - 1] + nums[i];
        }
    }
    
    int sumRange(int left, int right) {
        return sum[right] - (left > 0 ? sum[left - 1] : 0);
    }
};

力扣-303.区域和检索-数组不可变_第1张图片

你可能感兴趣的:(LeetCode,leetcode,算法)