← All patterns
Sliding Window

Sliding Window — Dynamic / Variable Size

146 practice questions|Medium

When to use it

Expand the window until constraints are met, then shrink to find optimal subarray.

Key Signals & Indicators

  • Target subrange width is unknown or variable
  • Problem mentions maximum, minimum, or target criteria (e.g. sum = X)
  • Window elements can be checked dynamically

Pattern Boilerplate

c++
// C++ Variable Sliding Window Template
#include <vector>

int variableSlidingWindow(const std::vector<int>& arr, int target) {
    int left = 0, currentSum = 0, minLength = 1e9;
    
    for (int right = 0; right < arr.size(); ++right) {
        currentSum += arr[right]; // Expand window
        
        // Shrink window while constraint is met
        while (currentSum >= target) {
            minLength = std::min(minLength, right - left + 1);
            currentSum -= arr[left];
            left++;
        }
    }
    return minLength == 1e9 ? 0 : minLength;
}

Problems using this pattern

1Alternating Groups IEasy
ArraySliding Window
Solve →
2Alternating Groups IIMedium
ArraySliding Window
Solve →
3Apply Operations to Maximize Frequency ScoreHard
ArrayBinary SearchSliding Window
Solve →
4Arithmetic SlicesMedium
ArrayDynamic ProgrammingSliding Window
Solve →
5Best Time to Buy and Sell Stock using StrategyMedium
ArraySliding WindowPrefix Sum
Solve →
6Binary String With Substrings Representing 1 To NMedium
Hash TableStringBit Manipulation
Solve →
7Binary Subarrays With SumMedium
ArrayHash TableSliding Window
Solve →
8Constrained Subsequence SumHard
ArrayDynamic ProgrammingQueue
Solve →
9Contains Duplicate IIEasy
ArrayHash TableSliding Window
Solve →
10Contains Duplicate IIIHard
ArraySliding WindowSorting
Solve →
11Continuous SubarraysMedium
ArrayQueueSliding Window
Solve →
12Count Complete Subarrays in an ArrayMedium
ArrayHash TableSliding Window
Solve →
13Count Complete SubstringsHard
Hash TableStringSliding Window
Solve →
14Count Non-Decreasing Subarrays After K OperationsHard
ArrayStackSegment Tree
Solve →
15Count Number of Nice SubarraysMedium
ArrayHash TableMath
Solve →
16Count of Substrings Containing Every Vowel and K Consonants IIMedium
Hash TableStringSliding Window
Solve →
17Count Partitions With Max-Min Difference at Most KMedium
ArrayDynamic ProgrammingQueue
Solve →
18Count Prime-Gap Balanced SubarraysMedium
ArrayMathQueue
Solve →
19Count Subarrays Where Max Element Appears at Least K TimesMedium
ArraySliding Window
Solve →
20Count Subarrays With Fixed BoundsHard
ArrayQueueSliding Window
Solve →
21Count Subarrays With Score Less Than KHard
ArrayBinary SearchSliding Window
Solve →
22Count Substrings That Can Be Rearranged to Contain a String IMedium
Hash TableStringSliding Window
Solve →
23Count Substrings That Satisfy K-Constraint IEasy
StringSliding Window
Solve →
24Count Substrings With K-Frequency Characters IMedium
Hash TableStringSliding Window
Solve →
25Count Substrings Without Repeating CharacterMedium
Hash TableStringSliding Window
Solve →
26Count the Number of Good SubarraysMedium
ArrayHash TableSliding Window
Solve →
27Count Zero Request ServersMedium
ArrayHash TableSliding Window
Solve →
28Defuse the BombEasy
ArraySliding Window
Solve →
29Diet Plan PerformanceEasy
ArraySliding Window
Solve →
30Distinct Numbers in Each SubarrayMedium
ArrayHash TableSliding Window
Solve →
31Divide an Array Into Subarrays With Minimum Cost IIHard
ArrayHash TableSliding Window
Solve →
32Equalize Strings by Adding or Removing Characters at EndsMedium
StringBinary SearchDynamic Programming
Solve →
33Find All Anagrams in a StringMedium
Hash TableStringSliding Window
Solve →
34Find K Closest ElementsMedium
ArrayTwo PointersBinary Search
Solve →
35Find K-Length Substrings With No Repeated CharactersMedium
Hash TableStringSliding Window
Solve →
36Find Longest Special Substring That Occurs Thrice IMedium
Hash TableStringBinary Search
Solve →
37Find Longest Special Substring That Occurs Thrice IIMedium
Hash TableStringBinary Search
Solve →
38Find Pattern in Infinite Stream IMedium
ArraySliding WindowRolling Hash
Solve →
39Find Pattern in Infinite Stream IIHard
ArraySliding WindowRolling Hash
Solve →
40Find Substring With Given Hash ValueHard
StringSliding WindowRolling Hash
Solve →
41Find the K-Beauty of a NumberEasy
MathStringSliding Window
Solve →
42Find the Longest Equal SubarrayMedium
ArrayHash TableBinary Search
Solve →
43Find the Median of the Uniqueness ArrayHard
ArrayHash TableBinary Search
Solve →
44Find the Power of K-Size Subarrays IMedium
ArraySliding Window
Solve →
45Find Two Non-overlapping Sub-arrays Each With Target SumMedium
ArrayHash TableBinary Search
Solve →
46Find X-Sum of All K-Long Subarrays IEasy
ArrayHash TableSliding Window
Solve →
47Find X-Sum of All K-Long Subarrays IIHard
ArrayHash TableSliding Window
Solve →
48Frequency of the Most Frequent ElementMedium
ArrayBinary SearchGreedy
Solve →
49Fruit Into BasketsMedium
ArrayHash TableSliding Window
Solve →
50Get Equal Substrings Within BudgetMedium
StringBinary SearchSliding Window
Solve →
51Grumpy Bookstore OwnerMedium
ArraySliding Window
Solve →
52Jump Game VIIMedium
StringDynamic ProgrammingSliding Window
Solve →
53K Empty SlotsHard
ArrayBinary Indexed TreeSegment Tree
Solve →
54K Radius Subarray AveragesMedium
ArraySliding Window
Solve →
55Kth Smallest Subarray SumMedium
ArrayBinary SearchSliding Window
Solve →
56Length of Longest Subarray With at Most K FrequencyMedium
ArrayHash TableSliding Window
Solve →
57Length of the Longest Valid SubstringHard
ArrayHash TableString
Solve →
58Longest Continuous Subarray With Absolute Diff Less Than or Equal to LimitMedium
ArrayQueueSliding Window
Solve →
59Longest Duplicate SubstringHard
StringBinary SearchSliding Window
Solve →
60Longest Even Odd Subarray With ThresholdEasy
ArraySliding Window
Solve →
61Longest Harmonious SubsequenceEasy
ArrayHash TableSliding Window
Solve →
62Longest Nice SubarrayMedium
ArrayBit ManipulationSliding Window
Solve →
63Longest Nice SubstringEasy
Hash TableStringDivide and Conquer
Solve →
64Longest Repeating Character ReplacementMedium
Hash TableStringSliding Window
Solve →
65Longest Subarray of 1's After Deleting One ElementMedium
ArrayDynamic ProgrammingSliding Window
Solve →
66Longest Substring Of All Vowels in OrderMedium
StringSliding Window
Solve →
67Longest Substring with At Least K Repeating CharactersMedium
Hash TableStringDivide and Conquer
Solve →
68Longest Substring with At Most K Distinct CharactersMedium
Hash TableStringSliding Window
Solve →
69Longest Substring with At Most Two Distinct CharactersMedium
Hash TableStringSliding Window
Solve →
70Longest Substring Without Repeating CharactersMedium
Hash TableStringSliding Window
Solve →
71Longest Turbulent SubarrayMedium
ArrayDynamic ProgrammingSliding Window
Solve →
72Max Consecutive Ones IIMedium
ArrayDynamic ProgrammingSliding Window
Solve →
73Max Consecutive Ones IIIMedium
ArrayBinary SearchSliding Window
Solve →
74Max Value of EquationHard
ArrayQueueSliding Window
Solve →
75Maximize the Confusion of an ExamMedium
StringBinary SearchSliding Window
Solve →
76Maximize the Minimum Powered CityHard
ArrayBinary SearchGreedy
Solve →
77Maximize Win From Two SegmentsMedium
ArrayBinary SearchSliding Window
Solve →
78Maximum Average Subarray IEasy
ArraySliding Window
Solve →
79Maximum Beauty of an Array After Applying OperationMedium
ArrayBinary SearchSliding Window
Solve →
80Maximum Coins From K Consecutive BagsMedium
ArrayBinary SearchGreedy
Solve →
81Maximum Difference Between Even and Odd Frequency IIHard
StringSliding WindowEnumeration
Solve →
82Maximum Erasure ValueMedium
ArrayHash TableSliding Window
Solve →
83Maximum Frequency of an Element After Performing Operations IMedium
ArrayBinary SearchSliding Window
Solve →
84Maximum Frequency of an Element After Performing Operations IIHard
ArrayBinary SearchSliding Window
Solve →
85Maximum Frequency Score of a SubarrayHard
ArrayHash TableMath
Solve →
86Maximum Fruits Harvested After at Most K StepsHard
ArrayBinary SearchSliding Window
Solve →
87Maximum Length of Repeated SubarrayMedium
ArrayBinary SearchDynamic Programming
Solve →
88Maximum Length Substring With Two OccurrencesEasy
Hash TableStringSliding Window
Solve →
89Maximum Number of Occurrences of a SubstringMedium
Hash TableStringSliding Window
Solve →
90Maximum Number of Robots Within BudgetHard
ArrayBinary SearchQueue
Solve →
91Maximum Number of Visible PointsHard
ArrayMathGeometry
Solve →
92Maximum Number of Vowels in a Substring of Given LengthMedium
StringSliding Window
Solve →
93Maximum Points You Can Obtain from CardsMedium
ArraySliding WindowPrefix Sum
Solve →
94Maximum Strong Pair XOR IEasy
ArrayHash TableBit Manipulation
Solve →
95Maximum Strong Pair XOR IIHard
ArrayHash TableBit Manipulation
Solve →
96Maximum Subarray With Equal ProductsEasy
ArrayMathSliding Window
Solve →
97Maximum Sum of 3 Non-Overlapping SubarraysHard
ArrayDynamic ProgrammingSliding Window
Solve →
98Maximum Sum of Almost Unique SubarrayMedium
ArrayHash TableSliding Window
Solve →
99Maximum Sum of Distinct Subarrays With Length KMedium
ArrayHash TableSliding Window
Solve →
100Maximum Sum of Two Non-Overlapping SubarraysMedium
ArrayDynamic ProgrammingSliding Window
Solve →
101Maximum White Tiles Covered by a CarpetMedium
ArrayBinary SearchGreedy
Solve →
102Minimize Connected Groups by Inserting IntervalMedium
ArrayBinary SearchSliding Window
Solve →
103Minimum Adjacent Swaps for K Consecutive OnesHard
ArrayGreedySliding Window
Solve →
104Minimum Consecutive Cards to Pick UpMedium
ArrayHash TableSliding Window
Solve →
105Minimum Difference Between Highest and Lowest of K ScoresEasy
ArraySliding WindowSorting
Solve →
106Minimum Moves to Pick K OnesHard
ArrayGreedySliding Window
Solve →
107Minimum Number of Flips to Make the Binary String AlternatingMedium
StringDynamic ProgrammingSliding Window
Solve →
108Minimum Number of K Consecutive Bit FlipsHard
ArrayBit ManipulationQueue
Solve →
109Minimum Number of Operations to Make Array ContinuousHard
ArrayHash TableBinary Search
Solve →
110Minimum Operations to Make Binary Array Elements Equal to One IMedium
ArrayBit ManipulationQueue
Solve →
111Minimum Operations to Reduce X to ZeroMedium
ArrayHash TableBinary Search
Solve →
112Minimum Positive Sum Subarray Easy
ArraySliding WindowPrefix Sum
Solve →
113Minimum Recolors to Get K Consecutive Black BlocksEasy
StringSliding Window
Solve →
114Minimum Removals to Balance ArrayMedium
ArrayBinary SearchSliding Window
Solve →
115Minimum Size Subarray in Infinite ArrayMedium
ArrayHash TableSliding Window
Solve →
116Minimum Size Subarray SumMedium
ArrayBinary SearchSliding Window
Solve →
117Minimum Swaps to Group All 1's Together IIMedium
ArraySliding Window
Solve →
118Minimum Swaps to Group All 1's TogetherMedium
ArraySliding Window
Solve →
119Minimum Window SubsequenceHard
StringDynamic ProgrammingSliding Window
Solve →
120Minimum Window SubstringHard
Hash TableStringSliding Window
Solve →
121Moving Stones Until Consecutive IIMedium
ArrayMathSliding Window
Solve →
122New 21 GameMedium
MathDynamic ProgrammingSliding Window
Solve →
123Number of Equal Count SubstringsMedium
Hash TableStringSliding Window
Solve →
124Number of Smooth Descent Periods of a StockMedium
ArrayMathTwo Pointers
Solve →
125Number of Sub-arrays of Size K and Average Greater than or Equal to ThresholdMedium
ArraySliding Window
Solve →
126Number of Substrings Containing All Three CharactersMedium
Hash TableStringSliding Window
Solve →
127Number of Unique Flavors After Sharing K CandiesMedium
ArrayHash TableSliding Window
Solve →
128Permutation in StringMedium
Hash TableTwo PointersString
Solve →
129Repeated DNA SequencesMedium
Hash TableStringBit Manipulation
Solve →
130Replace the Substring for Balanced StringMedium
StringSliding Window
Solve →
131Reschedule Meetings for Maximum Free Time IMedium
ArrayGreedySliding Window
Solve →
132Shortest and Lexicographically Smallest Beautiful StringMedium
StringSliding Window
Solve →
133Shortest Subarray With OR at Least K IEasy
ArrayBit ManipulationSliding Window
Solve →
134Shortest Subarray With OR at Least K IIMedium
ArrayBit ManipulationSliding Window
Solve →
135Shortest Subarray with Sum at Least KHard
ArrayBinary SearchQueue
Solve →
136Sliding Subarray BeautyMedium
ArrayHash TableSliding Window
Solve →
137Sliding Window MaximumHard
ArrayQueueSliding Window
Solve →
138Sliding Window MedianHard
ArrayHash TableSliding Window
Solve →
139Smallest Range Covering Elements from K ListsHard
ArrayHash TableGreedy
Solve →
140Smallest Subarrays With Maximum Bitwise ORMedium
ArrayBinary SearchBit Manipulation
Solve →
141Subarray Product Less Than KMedium
ArrayBinary SearchSliding Window
Solve →
142Subarrays with K Different IntegersHard
ArrayHash TableSliding Window
Solve →
143Substring with Concatenation of All WordsHard
Hash TableStringSliding Window
Solve →
144Substrings of Size Three with Distinct CharactersEasy
Hash TableStringSliding Window
Solve →
145Swap For Longest Repeated Character SubstringMedium
Hash TableStringSliding Window
Solve →
146Take K of Each Character From Left and RightMedium
Hash TableStringSliding Window
Solve →