Range Sum Query - Immutable

EasyArrayDesignPrefix Sum

Solution

export class NumArray {
  private readonly prefixSum: number[];
 
  constructor(nums: number[]) {
    const n = nums.length;
    this.prefixSum = new Array<number>(n + 1).fill(0);
    nums.forEach((num, i) => {
      this.prefixSum[i + 1] += num + this.prefixSum[i];
    });
  }
 
  sumRange(left: number, right: number): number {
    return this.prefixSum[right + 1] - this.prefixSum[left];
  }
}