Interval Sum
Question (LC.206)
Example
I: [1,2,7,8,5]
Q1: (0, 4) => 1+2+7+8+5
Q2: (1, 2) => 2+7
Q3: (2, 4) => 7+8+5Approach
Code
public ArrayList<Long> intervalSum(int[] A, ArrayList<Interval> queries) {
ArrayList<Long> results = new ArrayList<>();
if (A == null || A.length == 0) {
return results;
}
long[] preSum = prefixSum(A);
for (Interval query : queries) {
results.add(getIntvSum(preSum, query));
}
return results;
}
// [0, 1, 3, 10, 18, 23]
private long[] prefixSum(int[] nums) {
long[] preSum = new long[nums.length + 1];
preSum[0] = 0;
long curSum = 0;
for (int i = 0; i < nums.length; i++) {
curSum += nums[i];
preSum[i + 1] = curSum;
}
return preSum;
}
private long getIntvSum(long[] preSum, Interval query) {
return preSum[query.end + 1] - preSum[query.start];
}Time & Space Complexity
Follow Up (LC.207)
Example
Analysis
Behold, Segment Tree
Segment Tree Code
Time & Space Complexity
Last updated