class NumArray {
public:
vector<int> accu;//保存以i为结尾得子串的和(包含i)。
public:
NumArray(vector<int> &nums) {
// accu[0]=nums[0];
accu=nums;
for (int i =1; i<nums.size(); i++) {
accu[i]=accu[i-1]+nums[i];
}
}
int sumRange(int i, int j) {
int ans;
ans=accu[j]-accu[i-1];
return ans;
}
};
想法是用一个数组保存nums数组的子串的部分和。accu[i]表示nums[0]+.......+nums[i]。想要得到nums[i]+......+nums[j]的部分和,只要accu[j]-accu[i-1]即可。
LeetCode Range Sum Query - Immutable
最新推荐文章于 2024-12-03 10:03:39 发布