← All patterns
Prefix / Range

Prefix Sum

204 practice questions|Easy

When to use it

Precalculate running totals to execute range queries in O(1) time.

Key Signals & Indicators

  • Requires multiple range sum queries on an array
  • Computing subarrays that sum to target
  • Prefix or suffix cumulative values are helpful

Pattern Boilerplate

c++
// C++ Prefix Sum Template
#include <vector>

class RangeSumQuery {
    std::vector<int> prefix;
public:
    RangeSumQuery(const std::vector<int>& arr) {
        prefix.resize(arr.size() + 1, 0);
        for (size_t i = 0; i < arr.size(); ++i) {
            prefix[i + 1] = prefix[i] + arr[i];
        }
    }
    
    int querySum(int left, int right) {
        return prefix[right + 1] - prefix[left];
    }
};

Problems using this pattern

1Ant on the BoundaryEasy
ArraySimulationPrefix Sum
Solve →
2Apply Operations to Make All Array Elements Equal to ZeroMedium
ArrayPrefix Sum
Solve →
3Apply Operations to Maximize Frequency ScoreHard
ArrayBinary SearchSliding Window
Solve →
4Average Height of Buildings in Each SegmentMedium
ArraySortingHeap (Priority Queue)
Solve →
5Best Time to Buy and Sell Stock using StrategyMedium
ArraySliding WindowPrefix Sum
Solve →
6Binary Subarrays With SumMedium
ArrayHash TableSliding Window
Solve →
7Bitwise OR of All Subsequence SumsMedium
ArrayMathBit Manipulation
Solve →
8Brightest Position on StreetMedium
ArraySortingPrefix Sum
Solve →
9Build Array Where You Can Find The Maximum Exactly K ComparisonsHard
Dynamic ProgrammingPrefix Sum
Solve →
10Can Make Palindrome from SubstringMedium
ArrayHash TableString
Solve →
11Can You Eat Your Favorite Candy on Your Favorite Day?Medium
ArrayPrefix Sum
Solve →
12Car PoolingMedium
ArraySortingHeap (Priority Queue)
Solve →
13Change Minimum Characters to Satisfy One of Three ConditionsMedium
Hash TableStringCounting
Solve →
14Check if All the Integers in a Range Are CoveredEasy
ArrayHash TablePrefix Sum
Solve →
15Concatenate Non-Zero Digits and Multiply by Sum IIMedium
MathStringPrefix Sum
Solve →
16Construct Product MatrixMedium
ArrayMatrixPrefix Sum
Solve →
17Contiguous ArrayMedium
ArrayHash TablePrefix Sum
Solve →
18Continuous Subarray SumMedium
ArrayHash TableMath
Solve →
19Corporate Flight BookingsMedium
ArrayPrefix Sum
Solve →
20Count Beautiful Substrings IMedium
Hash TableMathString
Solve →
21Count Beautiful Substrings IIHard
Hash TableMathString
Solve →
22Count Increasing QuadrupletsHard
ArrayDynamic ProgrammingBinary Indexed Tree
Solve →
23Count Number of Nice SubarraysMedium
ArrayHash TableMath
Solve →
24Count of Interesting SubarraysMedium
ArrayHash TablePrefix Sum
Solve →
25Count Partitions with Even Sum DifferenceEasy
ArrayMathPrefix Sum
Solve →
26Count Partitions With Max-Min Difference at Most KMedium
ArrayDynamic ProgrammingQueue
Solve →
27Count Positions on Street With Required BrightnessMedium
ArrayPrefix Sum
Solve →
28Count Routes to Climb a Rectangular GridHard
ArrayDynamic ProgrammingMatrix
Solve →
29Count Subarrays With Median KHard
ArrayHash TablePrefix Sum
Solve →
30Count Subarrays With Score Less Than KHard
ArrayBinary SearchSliding Window
Solve →
31Count Submatrices With Equal Frequency of X and YMedium
ArrayMatrixPrefix Sum
Solve →
32Count Submatrices with Top-Left Element and Sum Less Than kMedium
ArrayMatrixPrefix Sum
Solve →
33Count the Hidden SequencesMedium
ArrayPrefix Sum
Solve →
34Count the Number of Houses at a Certain Distance IMedium
Breadth-First SearchGraph TheoryPrefix Sum
Solve →
35Count the Number of Houses at a Certain Distance IIHard
Graph TheoryPrefix Sum
Solve →
36Count Triplets That Can Form Two Arrays of Equal XORMedium
ArrayHash TableMath
Solve →
37Count Vowel Strings in RangesMedium
ArrayStringPrefix Sum
Solve →
38Delivering Boxes from Storage to PortsHard
ArrayDynamic ProgrammingSegment Tree
Solve →
39Describe the PaintingMedium
ArrayHash TableSorting
Solve →
40Design Exam Scores TrackerMedium
ArrayBinary SearchDesign
Solve →
41Divide Intervals Into Minimum Number of GroupsMedium
ArrayTwo PointersGreedy
Solve →
42Find All Good IndicesMedium
ArrayDynamic ProgrammingPrefix Sum
Solve →
43Find All Possible Stable Binary Arrays IIHard
Dynamic ProgrammingPrefix Sum
Solve →
44Find Good Days to Rob the BankMedium
ArrayDynamic ProgrammingPrefix Sum
Solve →
45Find Kth Largest XOR Coordinate ValueMedium
ArrayDivide and ConquerBit Manipulation
Solve →
46Find Pivot IndexEasy
ArrayPrefix Sum
Solve →
47Find Polygon With the Largest PerimeterMedium
ArrayGreedySorting
Solve →
48Find the Count of Monotonic Pairs IHard
ArrayMathDynamic Programming
Solve →
49Find the Count of Monotonic Pairs IIHard
ArrayMathDynamic Programming
Solve →
50Find the Highest AltitudeEasy
ArrayPrefix Sum
Solve →
51Find the Longest Substring Containing Vowels in Even CountsMedium
Hash TableStringBit Manipulation
Solve →
52Find the Middle Index in ArrayEasy
ArrayPrefix Sum
Solve →
53Find the Minimum Amount of Time to Brew PotionsMedium
ArraySimulationPrefix Sum
Solve →
54Find the N-th Value After K SecondsMedium
ArrayMathSimulation
Solve →
55Find the Original Typed String IIHard
StringDynamic ProgrammingPrefix Sum
Solve →
56Find the Pivot IntegerEasy
MathPrefix Sum
Solve →
57Find the Score of All Prefixes of an ArrayMedium
ArrayPrefix Sum
Solve →
58Find the Student that Will Replace the ChalkMedium
ArrayBinary SearchSimulation
Solve →
59Frequency of the Most Frequent ElementMedium
ArrayBinary SearchGreedy
Solve →
60Get Biggest Three Rhombus Sums in a GridMedium
ArrayMathSorting
Solve →
61Get Equal Substrings Within BudgetMedium
StringBinary SearchSliding Window
Solve →
62Grid GameMedium
ArrayMatrixPrefix Sum
Solve →
63Increment Submatrices by OneMedium
ArrayMatrixPrefix Sum
Solve →
64Intervals Between Identical ElementsMedium
ArrayHash TablePrefix Sum
Solve →
65Jump Game VIIMedium
StringDynamic ProgrammingSliding Window
Solve →
66Largest Magic SquareMedium
ArrayMatrixPrefix Sum
Solve →
67Largest Sum of AveragesMedium
ArrayDynamic ProgrammingPrefix Sum
Solve →
68Left and Right Sum DifferencesEasy
ArrayPrefix Sum
Solve →
69Longest Balanced Subarray IMedium
ArrayHash TableDivide and Conquer
Solve →
70Longest Balanced Subarray IIHard
ArrayHash TableDivide and Conquer
Solve →
71Longest Balanced Substring IIMedium
Hash TableStringPrefix Sum
Solve →
72Longest Special Path IIHard
ArrayHash TableTree
Solve →
73Longest Subsequence With Limited SumEasy
ArrayBinary SearchGreedy
Solve →
74Longest Well-Performing IntervalMedium
ArrayHash TableStack
Solve →
75Make a Positive ArrayMedium
ArrayGreedyPrefix Sum
Solve →
76Make Array Elements Equal to ZeroEasy
ArraySimulationPrefix Sum
Solve →
77Make Sum Divisible by PMedium
ArrayHash TablePrefix Sum
Solve →
78Matrix Block SumMedium
ArrayMatrixPrefix Sum
Solve →
79Max Consecutive Ones IIIMedium
ArrayBinary SearchSliding Window
Solve →
80Max Sum of Rectangle No Larger Than KHard
ArrayBinary SearchMatrix
Solve →
81Maximize Number of Subsequences in a StringMedium
StringGreedyPrefix Sum
Solve →
82Maximize Subarrays After Removing One Conflicting PairHard
ArraySegment TreeEnumeration
Solve →
83Maximize the Beauty of the GardenHard
ArrayHash TableGreedy
Solve →
84Maximize the Confusion of an ExamMedium
StringBinary SearchSliding Window
Solve →
85Maximize the Minimum Powered CityHard
ArrayBinary SearchGreedy
Solve →
86Maximum Average Subarray IIHard
ArrayBinary SearchPrefix Sum
Solve →
87Maximum Coins From K Consecutive BagsMedium
ArrayBinary SearchGreedy
Solve →
88Maximum Coins Heroes Can CollectMedium
ArrayTwo PointersBinary Search
Solve →
89Maximum Difference Between Even and Odd Frequency IIHard
StringSliding WindowEnumeration
Solve →
90Maximum Frequency After Subarray OperationMedium
ArrayHash TableDynamic Programming
Solve →
91Maximum Frequency of an Element After Performing Operations IMedium
ArrayBinary SearchSliding Window
Solve →
92Maximum Frequency of an Element After Performing Operations IIHard
ArrayBinary SearchSliding Window
Solve →
93Maximum Fruits Harvested After at Most K StepsHard
ArrayBinary SearchSliding Window
Solve →
94Maximum Good Subarray SumMedium
ArrayHash TablePrefix Sum
Solve →
95Maximum Number of Non-Overlapping Subarrays With Sum Equals TargetMedium
ArrayHash TableGreedy
Solve →
96Maximum Number of Robots Within BudgetHard
ArrayBinary SearchQueue
Solve →
97Maximum Number of Subsequences After One InsertingMedium
StringDynamic ProgrammingGreedy
Solve →
98Maximum Number of Ways to Partition an ArrayHard
ArrayHash TableCounting
Solve →
99Maximum ORMedium
ArrayGreedyBit Manipulation
Solve →
100Maximum Points You Can Obtain from CardsMedium
ArraySliding WindowPrefix Sum
Solve →
101Maximum Population YearEasy
ArrayCountingPrefix Sum
Solve →
102Maximum Score After Splitting a StringEasy
StringPrefix Sum
Solve →
103Maximum Score From Grid OperationsHard
ArrayDynamic ProgrammingMatrix
Solve →
104Maximum Segment Sum After RemovalsHard
ArrayUnion-FindPrefix Sum
Solve →
105Maximum Side Length of a Square with Sum Less than or Equal to ThresholdMedium
ArrayBinary SearchMatrix
Solve →
106Maximum Size Subarray Sum Equals kMedium
ArrayHash TablePrefix Sum
Solve →
107Maximum Strength of K Disjoint SubarraysHard
ArrayDynamic ProgrammingPrefix Sum
Solve →
108Maximum Subarray Min-ProductMedium
ArrayStackMonotonic Stack
Solve →
109Maximum Subarray Sum With Length Divisible by KMedium
ArrayHash TablePrefix Sum
Solve →
110Maximum Sum Obtained of Any PermutationMedium
ArrayGreedySorting
Solve →
111Maximum Sum of 3 Non-Overlapping SubarraysHard
ArrayDynamic ProgrammingSliding Window
Solve →
112Maximum Sum of an HourglassMedium
ArrayMatrixPrefix Sum
Solve →
113Maximum Sum Score of ArrayMedium
ArrayPrefix Sum
Solve →
114Maximum Total Beauty of the GardensHard
ArrayTwo PointersBinary Search
Solve →
115Maximum Value of K Coins From PilesHard
ArrayDynamic ProgrammingPrefix Sum
Solve →
116Maximum White Tiles Covered by a CarpetMedium
ArrayBinary SearchGreedy
Solve →
117Maximum XOR for Each QueryMedium
ArrayBit ManipulationPrefix Sum
Solve →
118Meeting Rooms IIMedium
ArrayTwo PointersGreedy
Solve →
119Merge Operations for Minimum Travel TimeHard
ArrayDynamic ProgrammingPrefix Sum
Solve →
120Minimize Maximum of ArrayMedium
ArrayBinary SearchDynamic Programming
Solve →
121Minimum Absolute Difference QueriesMedium
ArrayPrefix Sum
Solve →
122Minimum Adjacent Swaps for K Consecutive OnesHard
ArrayGreedySliding Window
Solve →
123Minimum Amount of Time to Collect GarbageMedium
ArrayStringPrefix Sum
Solve →
124Minimum Array Changes to Make Differences EqualMedium
ArrayHash TablePrefix Sum
Solve →
125Minimum Average DifferenceMedium
ArrayPrefix Sum
Solve →
126Minimum Cost to Make Array EqualHard
ArrayBinary SearchGreedy
Solve →
127Minimum Cost to Merge StonesHard
ArrayDynamic ProgrammingPrefix Sum
Solve →
128Minimum Levels to Gain More PointsMedium
ArrayPrefix Sum
Solve →
129Minimum Moves to Make Array ComplementaryMedium
ArrayHash TablePrefix Sum
Solve →
130Minimum Moves to Pick K OnesHard
ArrayGreedySliding Window
Solve →
131Minimum Number of K Consecutive Bit FlipsHard
ArrayBit ManipulationQueue
Solve →
132Minimum Number of Operations to Move All Balls to Each BoxMedium
ArrayStringPrefix Sum
Solve →
133Minimum Operations to Make All Array Elements EqualMedium
ArrayBinary SearchSorting
Solve →
134Minimum Operations to Make Binary Array Elements Equal to One IMedium
ArrayBit ManipulationQueue
Solve →
135Minimum Operations to Reduce X to ZeroMedium
ArrayHash TableBinary Search
Solve →
136Minimum Penalty for a ShopMedium
StringPrefix Sum
Solve →
137Minimum Positive Sum Subarray Easy
ArraySliding WindowPrefix Sum
Solve →
138Minimum Size Subarray in Infinite ArrayMedium
ArrayHash TableSliding Window
Solve →
139Minimum Size Subarray SumMedium
ArrayBinary SearchSliding Window
Solve →
140Minimum Space Wasted From PackagingHard
ArrayBinary SearchSorting
Solve →
141Minimum Time to Visit All HousesMedium
ArrayPrefix Sum
Solve →
142Minimum Total Space Wasted With K Resizing OperationsMedium
ArrayDynamic ProgrammingPrefix Sum
Solve →
143Minimum Value to Get Positive Step by Step SumEasy
ArrayPrefix Sum
Solve →
144Minimum White Tiles After Covering With CarpetsHard
StringDynamic ProgrammingPrefix Sum
Solve →
145Movement of RobotsMedium
ArrayBrainteaserSorting
Solve →
146My Calendar IIMedium
ArrayBinary SearchDesign
Solve →
147My Calendar IIIHard
Binary SearchDesignSegment Tree
Solve →
148Number of Beautiful PartitionsHard
StringDynamic ProgrammingPrefix Sum
Solve →
149Number of Divisible SubstringsMedium
Hash TableStringCounting
Solve →
150Number of Flowers in Full BloomHard
ArrayHash TableBinary Search
Solve →
151Number of Same-End SubstringsMedium
ArrayHash TableString
Solve →
152Number of Sets of K Non-Overlapping Line SegmentsMedium
MathDynamic ProgrammingCombinatorics
Solve →
153Number of Sub-arrays With Odd SumMedium
ArrayMathDynamic Programming
Solve →
154Number of Submatrices That Sum to TargetHard
ArrayHash TableMatrix
Solve →
155Number of Substrings With Fixed RatioMedium
Hash TableMathString
Solve →
156Number of Ways of Cutting a PizzaHard
ArrayDynamic ProgrammingMemoization
Solve →
157Number of Ways to Select BuildingsMedium
StringDynamic ProgrammingPrefix Sum
Solve →
158Number of Ways to Split ArrayMedium
ArrayPrefix Sum
Solve →
159Number of Wonderful SubstringsMedium
Hash TableStringBit Manipulation
Solve →
160Partition Array to Minimize XORMedium
ArrayDynamic ProgrammingBit Manipulation
Solve →
161Plates Between CandlesMedium
ArrayStringBinary Search
Solve →
162Points That Intersect With CarsEasy
ArrayHash TablePrefix Sum
Solve →
163Product of Array Except SelfMedium
ArrayPrefix Sum
Solve →
164Product of the Last K NumbersMedium
ArrayMathDesign
Solve →
165Random Pick with WeightMedium
ArrayMathBinary Search
Solve →
166Random Point in Non-overlapping RectanglesMedium
ArrayMathBinary Search
Solve →
167Range AdditionMedium
ArrayPrefix Sum
Solve →
168Range Product Queries of PowersMedium
ArrayBit ManipulationPrefix Sum
Solve →
169Range Sum of Sorted Subarray SumsMedium
ArrayTwo PointersBinary Search
Solve →
170Range Sum Query 2D - ImmutableMedium
ArrayDesignMatrix
Solve →
171Range Sum Query - ImmutableEasy
ArrayDesignPrefix Sum
Solve →
172Rearrange Array to Maximize Prefix ScoreMedium
ArrayGreedySorting
Solve →
173Removing Minimum Number of Magic BeansMedium
ArrayGreedySorting
Solve →
174Running Sum of 1d ArrayEasy
ArrayPrefix Sum
Solve →
175Shift Distance Between Two StringsMedium
ArrayStringPrefix Sum
Solve →
176Shifting Letters IIMedium
ArrayStringPrefix Sum
Solve →
177Shifting LettersMedium
ArrayStringPrefix Sum
Solve →
178Shortest Subarray with Sum at Least KHard
ArrayBinary SearchQueue
Solve →
179Sorted GCD Pair QueriesHard
ArrayHash TableMath
Solve →
180Special Array IIMedium
ArrayBinary SearchPrefix Sum
Solve →
181Split Array Largest SumHard
ArrayBinary SearchDynamic Programming
Solve →
182Split Array with Equal SumHard
ArrayHash TablePrefix Sum
Solve →
183Split Array With Minimum DifferenceMedium
ArrayPrefix Sum
Solve →
184Stable Subarrays With Equal Boundary and Interior SumMedium
ArrayHash TablePrefix Sum
Solve →
185Stamping the GridHard
ArrayGreedyMatrix
Solve →
186Stone Game IIMedium
ArrayMathDynamic Programming
Solve →
187Stone Game VIIIHard
ArrayMathDynamic Programming
Solve →
188Subarray Product Less Than KMedium
ArrayBinary SearchSliding Window
Solve →
189Subarray Sum Equals KMedium
ArrayHash TablePrefix Sum
Solve →
190Subarray Sums Divisible by KMedium
ArrayHash TablePrefix Sum
Solve →
191Sum of Absolute Differences in a Sorted ArrayMedium
ArrayMathPrefix Sum
Solve →
192Sum of All Odd Length SubarraysEasy
ArrayMathPrefix Sum
Solve →
193Sum of DistancesMedium
ArrayHash TablePrefix Sum
Solve →
194Sum of Total Strength of WizardsHard
ArrayStackMonotonic Stack
Solve →
195Taking Maximum Energy From the Mystic DungeonMedium
ArrayPrefix Sum
Solve →
196Threshold Majority QueriesHard
ArrayHash TableBinary Search
Solve →
197Unique Length-3 Palindromic SubsequencesMedium
Hash TableStringBit Manipulation
Solve →
198Ways to Make a Fair ArrayMedium
ArrayPrefix Sum
Solve →
199Ways to Split Array Into Three SubarraysMedium
ArrayTwo PointersBinary Search
Solve →
200Widest Pair of Indices With Equal Range SumMedium
ArrayHash TablePrefix Sum
Solve →
201XOR Queries of a SubarrayMedium
ArrayBit ManipulationPrefix Sum
Solve →
202Zero Array Transformation IMedium
ArrayPrefix Sum
Solve →
203Zero Array Transformation IIMedium
ArrayBinary SearchPrefix Sum
Solve →
204Zero Array Transformation IIIMedium
ArrayGreedySorting
Solve →