给定一个整数数组 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]))
题解:前缀和
用一个数组 int[ ] pre 记录给定的nums数组从索引0到索引k(0<=k<nums.length)的元素总和,当要计算从索引 i 到 j(i ≤ j)范围内的元素总和时,就用0到索引j的元素总和减去0到索引i的元素总和。
class NumArray {
int[]nums;
int l;
public NumArray(int[] nums) {
l=nums.length;
this.nums=new int[l+1];
int ans=0;
for(int i=0;i<l;i++){
ans+=nums[i];
this.nums[i+1]=ans;
}
}
public int sumRange(int i, int j) {
return nums[j+1]-nums[i];
}
}