rangeSum<T extends num> function

T rangeSum<T extends num>(
  1. List<T> prefix,
  2. int i,
  3. int j
)

Returns the sum from index i to j using a prefix sum list.

Uses the formula: sum(i..j) = prefix[j] - prefix[i-1]

Throws if indices are out of bounds.

Time Complexity: O(1)

Implementation

T rangeSum<T extends num>(List<T> prefix, int i, int j) {
  if (i < 0 || j >= prefix.length || i > j) {
    throw RangeError(
      'Invalid indices: i=$i, j=$j for prefix of length ${prefix.length}',
    );
  }
  if (i == 0) return prefix[j];
  return (prefix[j] - prefix[i - 1]) as T;
}