解題思路
dp[i]:nums[0…i-1]的累計和(包括這兩個值)
初始值dp[0]=0;
狀態轉移
dp[i+1]=nums[i]+dp[i];
計算sumrange如下:
sumrange(i,j)=dp[j+1]-dp[i]
代碼
//dp[i]:nums[0...i-1]的累計和(包括這兩個值):
class NumArray {
public:
vector<int> dp;
NumArray(vector<int>& nums) {
//初始值
dp.assign(nums.size()+1, 0);
//狀態轉移
for (int i=0;i<nums.size();i++)
{
dp[i+1] = nums[i] + dp[i];
}
}
int sumRange(int i, int j) {
return dp[j + 1] - dp[i];
}
};