题目一:数组不可变
代码
class NumArray {
private int[] arr;
public NumArray(int[] nums) {
arr = new int[nums.length + 1];
for(int i = 0; i < nums.length; i++) {
arr[i+1] = arr[i] + nums[i];
}
}
public int sumRange(int i, int j) {
return arr[j + 1] - arr[i];
}
}
/**
* Your NumArray object will be instantiated and called as such:
* NumArray obj = new NumArray(nums);
* int param_1 = obj.sumRange(i,j);
*/
题目二:数组可变
代码
class NumArray {
private SegmentTree<Integer> sgTree;
public NumArray(int[] nums) {
if(nums.length != 0){
Integer[] arr = new Integer[nums.length];
for(int i = 0;i < nums.length;i++){
arr[i] = nums[i];
}
sgTree = new SegmentTree<>(arr,(a,b) -> a + b);
}
}
public void update(int i, int val) {
if(sgTree != null){
sgTree.set(i,val