给定一个整数数组 nums,处理以下类型的多个查询:
计算索引 left 和 right (包含 left 和 right)之间的 nums 元素的 和 ,其中 left <= right
实现 NumArray 类:
NumArray(int[] nums) 使用数组 nums 初始化对象
int sumRange(int i, int j) 返回数组 nums 中索引 left 和 right 之间的元素的 总和 ,包含 left 和 right 两点(也就是 nums[left] + nums[left + 1] + ... + nums[right] )
class NumArray {
private int[] preArr;
public NumArray(int[] nums) {
//preArr[0] = 0;
preArr = new int[nums.length + 1];
for(int i = 1;i < nums.length + 1;i ++){
preArr[i] = preArr[i - 1] + nums[i - 1];
}
}
public int sumRange(int left, int right) {
return preArr[right + 1] - preArr[left];
}
}
/**
* Your NumArray object will be instantiated and called as such:
* NumArray obj = new NumArray(nums);
* int param_1 = obj.sumRange(left,right);
*/
执行用时:7 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:44.2 MB, 在所有 Java 提交中击败了55.38%的用户
通过测试用例:15 / 15