题目
类型:前缀和
解题思路
这道题的最优解法是使用前缀和将sumRange函数的时间复杂度降到O(1),避免使用for循环
核心思路是我们new一个新的数组preSum出来,preSum[i]记录nums[0..i-1]的累加和

preSum 数组 ,如果想求得索引区间[1,4]内所有元素就可以通过preSum[5]-preSum[1]得出
代码
class NumArray {private int[] preSum;public NumArray(int[] nums) {preSum = new int[nums.length + 1];for (int i = 1; i < preSum.length; i++){preSum[i] = preSum[i - 1] + nums[i - 1];}}public int sumRange(int left, int right) {return preSum[right + 1] - preSum[left];}}/*** Your NumArray object will be instantiated and called as such:* NumArray obj = new NumArray(nums);* int param_1 = obj.sumRange(left,right);*/
