給定一個整數數組 ?nums,求出數組從索引?i?到?j??(i?≤?j) 范圍內元素的總和,包含?i,??j?兩點。
示例:
給定 nums = [-2, 0, 3, -5, 2, -1],求和函數為 sumRange()
sumRange(0, 2) -> 1
sumRange(2, 5) -> -1
sumRange(0, 5) -> -3
說明:
你可以假設數組不可變。
會多次調用?sumRange?方法。
思路: 把第n項改為前n項的和。
查的時候直接前j項和減去前i-1項和。
class NumArray {private int[] sum;public NumArray(int[] nums) {sum = nums;int len=sum.length;for(int i = 1; i < len; ++i)sum[i] += sum[i-1];}public int sumRange(int i, int j) {if(i==0)return sum[j];return sum[j] - sum[i-1];}
}/*** Your NumArray object will be instantiated and called as such:* NumArray obj = new NumArray(nums);* int param_1 = obj.sumRange(i,j);*/