题目描述:
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.
public int[] nums;
public Solution303(int[] nums) {
this.nums = nums;
}
public int sumRange(int i, int j) {
int result = 0;
for (int counter = i; counter <= j; counter++) {
result += nums[counter];
}
return result;
}
所以我们要做的是在sumRange中尽可能的时间复杂度是O(1)。sum(i,j)=sum(0,j)-sum(0,i)
正确方法如下:
public class NumArray {
List<Integer> list=new ArrayList<Integer>();
public NumArray(int[] nums) {
for(int i=0;i<nums.length;i++){
list.add(nums[i]);
}
}
public int sumRange(int i, int j) {
int sum=0;
for(int k=i;k<=j;k++){
sum+=list.get(k);
}
return sum;
}
}