描述:
Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive.
Example:
Given nums = [-2, 0, 3, -5, 2, -1]
sumRange(0, 2) -> 1
sumRange(2, 5) -> -1
sumRange(0, 5) -> -3
Note:
You may assume that the array does not change.
There are many calls to sumRange function.
思路:
求数组的某几项元素的和,数组不变,又会调用方法多次,怎么能利用前面的结果来计算后面的值呢?答案是显然的
首先,初始数组的时候先计算下前m项和,求某几项的和等于两个前几项和相减即可。
代码:
public class NumArray {
int sumArr[]=null;
public NumArray(int[] nums) {
if(nums!=null&&nums.length!=0)
{
sumArr=nums;
for(int i=1;i<nums.length;i++)
sumArr[i]=sumArr[i-1]+nums[i];
}
}
public int sumRange(int i, int j) {
if(sumArr==null||sumArr.length==0)
return 0;
if(i==0)
return sumArr[j];
else
return sumArr[j]-sumArr[i-1];
}
}