303. Range Sum Query - Immutable
计算出一个数组规定范围内的数值,是一个很简单的问题,但是根据题目的提示,数组不变并且会被多次调用求和一个范围的值,这就可以用要用动态规划来做,需要使用表格存储从0加到当前的和的数值,然后只要相减就可以得到规定范围内的数值,所以只需要O(mn)的时间复杂度就可以完成,并且表格可被多次使用。
class NumArray {
public:
NumArray(vector<int> nums) {
int x = 0;
arr.push_back(0);
for (int i = 0; i < nums.size(); i++) {
x += nums[i];
arr.push_back(x);
}
}
int sumRange(int i, int j) {
return arr[j+1] - arr[i];
}
vector<int> arr;
};