📖 Scenario: You are working with daily sales data for a small shop. You want to quickly find the total sales from the start of the month up to any given day.
🎯 Goal: Build a prefix sum array that stores cumulative sales totals for each day. This will help you answer total sales queries efficiently.
📋 What You'll Learn
Create a list of daily sales numbers
Create a prefix sum list to store cumulative totals
Use a loop to fill the prefix sum list
Print the prefix sum list
💡 Why This Matters
🌍 Real World
Prefix sum arrays are used in finance, data analysis, and gaming to quickly calculate totals over ranges without repeated addition.
💼 Career
Understanding prefix sums helps in optimizing algorithms and is a common interview topic for software engineering roles.
Progress0 / 4 steps
1
Create the daily sales list
Create a list called daily_sales with these exact values: [10, 20, 15, 30, 25]
DSA Python
Hint
Use square brackets and commas to create the list.
2
Create the prefix sum list
Create a list called prefix_sum with the same length as daily_sales, filled with zeros.
DSA Python
Hint
Use len() to get the length and multiply a list with zero.
3
Fill the prefix sum list with cumulative totals
Use a for loop with variable i from 0 to len(daily_sales) to fill prefix_sum so that each element is the sum of all previous sales including the current day. For i == 0, set prefix_sum[0] to daily_sales[0]. For others, set prefix_sum[i] to prefix_sum[i-1] + daily_sales[i].
DSA Python
Hint
Use range(len(daily_sales)) and an if condition inside the loop.
4
Print the prefix sum list
Print the prefix_sum list to display the cumulative sales totals.
DSA Python
Hint
Use print(prefix_sum) to show the list.
Practice
(1/5)
1. What does a prefix sum array represent for a given array arr?
easy
A. An array where each element is the product of all elements from the start up to that index in arr.
B. An array where each element is the maximum value found in arr up to that index.
C. An array where each element is the difference between consecutive elements in arr.
D. An array where each element is the sum of all elements from the start up to that index in arr.
Solution
Step 1: Understand prefix sum definition
A prefix sum array stores sums of elements from the start of the original array up to each index.
Step 2: Compare options with definition
Only An array where each element is the sum of all elements from the start up to that index in arr. correctly describes this sum accumulation; others describe different operations.
Final Answer:
An array where each element is the sum of all elements from the start up to that index in arr. -> Option D
Quick Check:
Prefix sum = cumulative sum [OK]
Hint: Prefix sum means adding elements from start to current index [OK]
Common Mistakes:
Confusing prefix sum with product or max operations
Thinking prefix sum stores differences
Assuming prefix sum stores original array values
2. Which of the following Python code snippets correctly initializes a prefix sum array prefix for an input list arr?
easy
A. prefix = [arr[0]]
for i in range(1, len(arr)):
prefix.append(arr[i] - prefix[i-1])
B. prefix = []
for i in range(len(arr)):
prefix.append(arr[i] + arr[i-1])
C. prefix = [arr[0]]
for i in range(1, len(arr)):
prefix.append(prefix[i-1] + arr[i])
D. prefix = [0] * len(arr)
for i in range(len(arr)):
prefix[i] = arr[i] * prefix[i-1]
Solution
Step 1: Analyze code for prefix sum logic
prefix = [arr[0]]
for i in range(1, len(arr)):
prefix.append(prefix[i-1] + arr[i]) starts prefix with first element and adds current element to previous prefix sum correctly.
Step 2: Check other options for errors
prefix = []
for i in range(len(arr)):
prefix.append(arr[i] + arr[i-1]) adds current and previous array elements incorrectly; C multiplies instead of sums; A subtracts instead of sums.
Final Answer:
prefix = [arr[0]]\nfor i in range(1, len(arr)):\n prefix.append(prefix[i-1] + arr[i]) -> Option C
Quick Check:
Prefix sum uses cumulative addition [OK]
Hint: Start prefix with first element, then add previous prefix sum [OK]
Common Mistakes:
Using multiplication instead of addition
Adding wrong elements or indices
Initializing prefix array incorrectly
3. What is the output of the following code?
arr = [3, 1, 4, 1, 5]
prefix = [arr[0]]
for i in range(1, len(arr)):
prefix.append(prefix[i-1] + arr[i])
print(prefix)
medium
A. [3, 4, 8, 9, 14]
B. [3, 1, 4, 1, 5]
C. [3, 3, 7, 8, 13]
D. [0, 3, 4, 8, 9]
Solution
Step 1: Calculate prefix sums step-by-step
Start with prefix = [3]. Then add 1: 3+1=4, add 4: 4+4=8, add 1: 8+1=9, add 5: 9+5=14.
Step 2: Form the final prefix array
prefix = [3, 4, 8, 9, 14]
Final Answer:
[3, 4, 8, 9, 14] -> Option A
Quick Check:
Sum accumulates correctly [OK]
Hint: Add current element to last prefix sum [OK]
Common Mistakes:
Confusing prefix array with original array
Off-by-one errors in indexing
Incorrect initial prefix value
4. Find the error in this prefix sum code and choose the corrected version:
arr = [2, 4, 6]
prefix = [0]
for i in range(len(arr)):
prefix.append(prefix[i] + arr[i])
print(prefix)
medium
A. Change prefix = [0] to prefix = [arr[0]] and loop from 1 to len(arr)-1.
B. Change prefix.append(prefix[i] + arr[i]) to prefix.append(prefix[i-1] + arr[i]).
C. Remove the initial zero from prefix and start loop from 0 as is.
D. No error; code works correctly and prints prefix sums.
Solution
Step 1: Identify initialization and loop issues
Initializing prefix with [0] and looping from 0 adds an extra leading zero. Tracing: i=0 append(0+2)=2 -> [0,2]; i=1 append(2+4)=6 -> [0,2,6]; i=2 append(6+6)=12 -> [0,2,6,12]. This produces prefix sums of length n+1 with prefix[0]=0, whereas standard is length n starting from arr[0].
Step 2: Correct initialization and loop range
Start prefix with first element arr[0], then loop from index 1 to end to add sums correctly.
Final Answer:
Change prefix = [0] to prefix = [arr[0]] and loop from 1 to len(arr)-1. -> Option A
Quick Check:
Proper start and loop fix prefix sums [OK]
Hint: Initialize prefix with first element, loop from second element [OK]
Common Mistakes:
Starting prefix with zero instead of first element
Looping from zero causing off-by-one errors
Using wrong prefix index inside loop
5. Given an array arr of length n, how can you use a prefix sum array to find the sum of elements between indices l and r (inclusive) efficiently?
hard
A. Calculate sum as prefix[r] * prefix[l].
B. Calculate sum as prefix[r] - prefix[l-1] if l > 0, else prefix[r].
C. Calculate sum as prefix[r] + prefix[l] always.
D. Calculate sum by looping from l to r and adding elements.
Solution
Step 1: Understand prefix sum usage for range sums
Prefix sum at index r stores sum from start to r. To get sum from l to r, subtract sum from start to l-1.
Step 2: Handle edge case when l is zero
If l is zero, sum is prefix[r] directly since no subtraction needed.
Final Answer:
Calculate sum as prefix[r] - prefix[l-1] if l > 0, else prefix[r]. -> Option B
Quick Check:
Range sum = prefix[r] - prefix[l-1] [OK]
Hint: Subtract prefix before l from prefix at r for range sum [OK]
Common Mistakes:
Adding prefix sums instead of subtracting
Ignoring edge case when l = 0
Using multiplication or looping unnecessarily
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.