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:
solution:
can use list to pre-process the input array, which store the left element sum. So once query range sum(i,j), left(j) - left(i-1), take O(1) to get result.
public class NumArray { ArrayList<Long> leftSum = new ArrayList<>(); public NumArray(int[] nums) { long sum = 0; for(int i=0;i<nums.length;i++) { sum+= nums[i]; leftSum.add(sum); } } public int sumRange(int i, int j) { if(i>0) { return (int)(leftSum.get(j) - leftSum.get(i-1)); }else if(i==0) { return leftSum.get(j).intValue(); }else { return 0; } } } // Your NumArray object will be instantiated and called as such: // NumArray numArray = new NumArray(nums); // numArray.sumRange(0, 1); // numArray.sumRange(1, 2);