📖 Scenario: Imagine you have a list of daily sales numbers for a small shop. You want to quickly find out the total sales from the start of the month up to any given day.
🎯 Goal: You will build a prefix sum array that helps you find the total sales up to any day efficiently.
📋 What You'll Learn
Create an integer array called sales with exact values: 5, 3, 8, 6, 2
Create an integer array called prefixSum of the same size as sales
Fill prefixSum so that each element at index i is the sum of sales from index 0 to i
Print the prefixSum array elements separated by spaces
💡 Why This Matters
🌍 Real World
Prefix sums are used in finance to quickly calculate cumulative totals, in gaming to track scores, and in data analysis to speed up range sum queries.
💼 Career
Understanding prefix sums is important for software engineers working on performance optimization, data processing, and algorithm design.
Progress0 / 4 steps
1
Create the sales array
Create an integer array called sales with these exact values: 5, 3, 8, 6, 2.
DSA C++
Hint
Use C++ array initialization syntax with the exact values.
2
Create the prefixSum array
Create an integer array called prefixSum with the same size as sales. Use sizeof(sales)/sizeof(sales[0]) to get the size.
DSA C++
Hint
Use the size of sales to declare prefixSum with the same length.
3
Fill the prefixSum array
Fill the prefixSum array so that prefixSum[0] equals sales[0], and for each index i from 1 to the last index, set prefixSum[i] to prefixSum[i-1] + sales[i]. Use a for loop with variable i starting from 1.
DSA C++
Hint
Start prefixSum with the first sales value, then add each next sales value to the previous sum.
4
Print the prefixSum array
Use a for loop with variable i from 0 to the last index of prefixSum to print each element separated by a space. Use printf with "%d ". After the loop, print a newline with printf("\n").
DSA C++
Hint
Print each prefix sum value followed by a space, then print a newline.
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 difference between the current and previous element in arr
B. An array where each element is the product of all elements from the start up to that index in arr
C. An array where each element is the sum of all elements from the start up to that index in arr
D. An array where each element is the maximum value found in arr up to that index
Solution
Step 1: Understand prefix sum array definition
A prefix sum array stores cumulative sums, where each element at index i is the sum of all elements from index 0 to i in the original array.
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 cumulative sum property. Other options 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 C
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 resets at each index
2. Which of the following C++ code snippets correctly initializes a prefix sum array prefix from an integer array arr of size n?
easy
A. prefix[0] = 0; for(int i = 1; i <= n; i++) prefix[i] = prefix[i-1] + arr[i];
B. prefix[0] = arr[0]; for(int i = 1; i < n; i++) prefix[i] = prefix[i-1] + arr[i];
C. prefix[0] = arr[0]; for(int i = 0; i < n; i++) prefix[i] = prefix[i-1] + arr[i];
D. prefix[0] = arr[0]; for(int i = 1; i < n; i++) prefix[i] = arr[i] - prefix[i-1];
Solution
Step 1: Check initialization of prefix array
Prefix sum starts with prefix[0] = arr[0], which is correct in options B, C, and D.
Step 2: Verify loop and summation logic
prefix[0] = arr[0]; for(int i = 1; i < n; i++) prefix[i] = prefix[i-1] + arr[i]; correctly loops from i=1 to n-1 and adds prefix[i-1] + arr[i]. prefix[0] = 0; for(int i = 1; i <= n; i++) prefix[i] = prefix[i-1] + arr[i]; has wrong indexing and loop range. prefix[0] = arr[0]; for(int i = 0; i < n; i++) prefix[i] = prefix[i-1] + arr[i]; uses prefix[i-1] at i=0 which is invalid. prefix[0] = arr[0]; for(int i = 1; i < n; i++) prefix[i] = arr[i] - prefix[i-1]; subtracts instead of adding.
Final Answer:
prefix[0] = arr[0]; for(int i = 1; i < n; i++) prefix[i] = prefix[i-1] + arr[i]; -> Option B
Quick Check:
Initialize first, then add previous prefix + current [OK]
Hint: Start prefix[0] = arr[0], then add previous prefix + current [OK]
Common Mistakes:
Starting loop at 0 and accessing prefix[-1]
Using wrong loop bounds (<= n instead of < n)
Subtracting instead of adding elements
3. What is the output of the following C++ code?
int arr[] = {2, 4, 6, 8};
int n = 4;
int prefix[4];
prefix[0] = arr[0];
for(int i = 1; i < n; i++) {
prefix[i] = prefix[i-1] + arr[i];
}
for(int i = 0; i < n; i++) {
std::cout << prefix[i] << " ";
}
Hint: Add current element to previous prefix sum each step [OK]
Common Mistakes:
Printing original array instead of prefix sums
Incorrect addition order
Off-by-one errors in loop
4. Identify the error in the following prefix sum array code and select the corrected version:
int arr[] = {1, 3, 5, 7};
int n = 4;
int prefix[4];
prefix[0] = arr[0];
for(int i = 1; i <= n; i++) {
prefix[i] = prefix[i-1] + arr[i];
}
medium
A. Change loop condition to i < n to avoid out-of-bounds access
B. Initialize prefix[0] = 0 instead of arr[0]
C. Use i = 0 as loop start and keep condition i < n
D. Replace prefix[i] with arr[i] inside loop
Solution
Step 1: Analyze loop bounds and array indexing
The loop runs with i from 1 to n inclusive (i <= n). Since arrays are 0-indexed, prefix[n] and arr[n] access out-of-bounds elements causing runtime error.
Step 2: Correct loop condition
Changing loop condition to i < n ensures indices stay within valid range (0 to n-1).
Final Answer:
Change loop condition to i < n to avoid out-of-bounds access -> Option A
Quick Check:
Loop must stay within array size [OK]
Hint: Loop index must be less than array size, not less or equal [OK]
Common Mistakes:
Using <= n causing out-of-bounds errors
Starting loop at 0 and accessing prefix[-1]
Incorrect initialization of prefix[0]
5. Given an array arr of size n, how can you use a prefix sum array to efficiently find the sum of elements between indices l and r (inclusive)?
hard
A. Sum = prefix[r] / prefix[l-1] if l > 0, else prefix[r]
B. Sum = prefix[r] + prefix[l-1] if l > 0, else prefix[r]
C. Sum = prefix[r] * prefix[l-1] if l > 0, else prefix[r]
D. Sum = prefix[r] - prefix[l-1] if l > 0, else prefix[r]
Solution
Step 1: Understand prefix sum usage for range queries
Prefix sum at index r gives sum from 0 to r. To get sum from l to r, subtract sum from 0 to l-1, which is prefix[l-1]. If l is 0, sum is prefix[r].
Step 2: Apply formula for sum between l and r
Sum = prefix[r] - prefix[l-1] if l > 0, else prefix[r]. Other operations like addition, multiplication, or division are incorrect.
Final Answer:
Sum = prefix[r] - prefix[l-1] if l > 0, else prefix[r] -> Option D
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[l-1] instead of subtracting
Using multiplication or division incorrectly
Not handling case when l = 0
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.