Building the prefix array takes one pass through the input:
function buildPrefixSum(nums)
n := length of nums
prefix := array of size (n + 1)
prefix[0] := 0
for i from 0 to n - 1
prefix[i + 1] := prefix[i] + nums[i]
return prefix
Time: . Space: .
Notice how each prefix value builds on the previous one. You're not recalculating sums from scratch each time.