【LeetCode】303. 區域和檢索 - 數組不可變

解題思路

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];
	}
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章