arr = [3, 1, 4, 1, 5] prefix_sum = [0] * len(arr) prefix_sum[0] = arr[0] for i in range(1, len(arr)): prefix_sum[i] = prefix_sum[i-1] + arr[i] print(prefix_sum)
The prefix sum array stores cumulative sums. Starting with 3, then 3+1=4, then 4+4=8, then 8+1=9, then 9+5=14.
Prefix sum arrays allow quick calculation of sums of any subarray by subtracting prefix sums, making sum queries O(1) after O(n) preprocessing.
arr = [2, 4, 6] prefix_sum = [0] * (len(arr) + 1) for i in range(len(arr)): prefix_sum[i + 1] = prefix_sum[i] + arr[i] print(prefix_sum)
The code correctly computes prefix_sum with an extra leading 0. prefix_sum[0] = 0, prefix_sum[1] = 0 + 2 = 2, prefix_sum[2] = 2 + 4 = 6, prefix_sum[3] = 6 + 6 = 12. Output: [0, 2, 6, 12], which is option A.
prefix_sum = [0, 3, 7, 12, 18] start = 1 end = 3 result = prefix_sum[end + 1] - prefix_sum[start] print(result)
The sum from index 1 to 3 is prefix_sum[4] - prefix_sum[1] = 18 - 3 = 15. The code computes prefix_sum[end + 1] - prefix_sum[start] = 18 - 3 = 15.
Original array derived: arr = [3, 4, 5, 6], sum arr[1:4] = 4+5+6=15.
So correct answer is 15 (option D).
The prefix sum array stores one value per element of the input array, so it requires linear space O(n).