Calculating Subarray Sum Using Prefix Sum In O(1) Time Complexity
Calculate prefix sums in O(n) time, then use them to find subarray sums in O(1) time with NumArray class. Prefix[i] stores sum till ith index, making range sum calculation efficient.
Problem
TC: O(n) for calculating the prefix sum and O(1) for getting the sum of the subarray in the range left and right
class NumArray {
int prefix[];
public NumArray(int[] nums) {
prefix = new int[nums.length];
int currentSum =0;
for(int i=0;i<nums.length;i++){
currentSum+=nums[i];
prefix[i] = currentSum;
}
}
public int sumRange(int left, int right) {
int rightSum = prefix[right];
int leftSum = (left>0) ? prefix[left-1]:0;
return rightSum-leftSum;
}
}
/**
* Your NumArray object will be insta...