###### tags: `LeetCode` `Easy` # LeetCode #303 Range Sum Query - Immutable ### (Easy) 給定一個整數數組  nums,求出數組從索引 i 到 j(i ≤ j)範圍內元素的總和,包含 i、j 兩點。 實現 NumArray 類: NumArray(int[] nums) 使用數組 nums 初始化對象 int sumRange(int i, int j) 返回數組 nums 從索引 i 到 j(i ≤ j)範圍內元素的總和,包含 i、j 兩點(也就是 sum(nums[i], nums[i + 1], ... , nums[j])) --- partial_sum可以計算階乘總和(前幾項的總和), 參數為(起始點,終止點,存入起始點)。 可在初始化時計算好前n項(1~nums.size())的合並儲存起來, 這樣就可以輕鬆計算索引內的和。(比如說索引2~5的和, 則用前5項和減去前2項和即可)。 --- ``` class NumArray { public: vector<int> psum; NumArray(vector<int>& nums):psum(nums.size()+1, 0) { partial_sum(nums.begin(), nums.end(), psum.begin()+1); } int sumRange(int left, int right) { return psum[right+1]-psum[left]; } }; /** * Your NumArray object will be instantiated and called as such: * NumArray* obj = new NumArray(nums); * int param_1 = obj->sumRange(left,right); */ ```