Sliding Window

Fundamentals

Dynamic and fixed-size windows over contiguous subarrays or substrings

147 problems·16 Easy·93 Medium·38 Hard
Pattern Study Guide & Cheat Sheet
▼

Track a contiguous subsegment of an array or string by expanding a right boundary and lazily contracting a left boundary whenever a constraint is broken.

Core Invariant: Monotonicity invariant: As `right` expands, window validity only degrades; advancing `left` only restores validity. Left pointer never moves backward, guaranteeing O(N) total pointer steps.

Recognize it (Keywords & Signals)
  • Contiguous subarray or substring
  • Longest / shortest substring meeting constraint K (e.g., at most K distinct chars)
  • Find minimum size subarray with sum >= S (non-negative numbers)
  • Fixed window of size K (e.g., maximum average of any subarray of size K)
When NOT to use

Array contains negative numbers and constraint is on sum (monotonicity is broken; must use Prefix Sum + Hash Map).

How to solve (Step-by-step)
  1. 1.Initialize `left = 0`, state tracking (e.g., frequency map or running sum), and `ans`.
  2. 2.Iterate `right` from 0 to len(arr) - 1, incorporating `arr[right]` into window state.
  3. 3.While the window constraint is broken: remove `arr[left]` from state and increment `left += 1`.
  4. 4.For longest valid window: update `ans = max(ans, right - left + 1)` after the shrink loop.
  5. 5.For shortest valid window: update `ans = min(ans, right - left + 1)` inside or right before the shrink loop.
Watch for (Interview Traps)
  • Shrinking with `if` instead of `while` when multiple elements must be evicted to restore validity
  • Forgetting to `del counts[key]` when count drops to 0 (leaving a 0 entry distorts len(counts))
  • Updating the answer at the wrong time (before vs after shrink loop depending on min vs max window)
Dynamic Sliding Window (Flexible / At Most K)
from collections import defaultdict

def sliding_window_at_most_k(s: str, k: int) -> int:
    counts = defaultdict(int)
    left = 0
    max_len = 0
    
    for right in range(len(s)):
        # 1. Expand window: include s[right]
        counts[s[right]] += 1
        
        # 2. Shrink window: contract from left while invalid
        while len(counts) > k:  # e.g., at most k distinct characters
            counts[s[left]] -= 1
            if counts[s[left]] == 0:
                del counts[s[left]]  # Must remove key to fix len(counts)
            left += 1
            
        # 3. Window [left...right] is now guaranteed valid
        max_len = max(max_len, right - left + 1)
        
    return max_len
Cost
O(n) amortized (each item added and removed at most once) · O(k) or O(min(n, alphabet_size)) (State map size bounded by distinct character alphabet (usually <= 26 or 128).)
Canonical problems
#3 Longest Substring Without Repeating Characters: Shrink left until repeated char count drops back to 1
#76 Minimum Window Substring: Expand until all target chars covered, shrink left to minimize length
#209 Minimum Size Subarray Sum: Shrink left while sum >= target to find minimal length
#424 Longest Repeating Character Replacement: Window is valid as long as window_len - max_freq <= k
Medium·117 companies·Max freq 100%·Acc 39.4%
micro1PhilipsOla Cabs+114
Hard·55 companies·Max freq 100%·Acc 49.0%
CohesityblinkitZenefits+52
Hard·41 companies·Max freq 100%·Acc 47.9%
Wissen TechnologyNeetCode 150Blind 75+38
Medium·27 companies·Max freq 100%·Acc 60.1%
Pocket GemsCREDNeetCode 150+24
Medium·24 companies·Max freq 100%·Acc 0.5%
YatraSquarepoint CapitalRevolut+21
Medium·24 companies·Max freq 88%·Acc 0.7%
LinkedInRokuMeta+21
Medium·20 companies·Max freq 88%·Acc 0.5%
YandexCoupangCashfree+17
Medium·19 companies·Max freq 95%·Acc 49.2%
NeetCode 150NeetCode 150Yandex+16
Medium·19 companies·Max freq 88%·Acc 52.2%
BCGCitigroupCitigroup+16
Medium·18 companies·Max freq 100%·Acc 0.6%
UberMolocoPhonePe+15
Hard·18 companies·Max freq 90%·Acc 68.6%
HashedInSquarepoint CapitalRoblox+15
Medium·16 companies·Max freq 100%·Acc 54.1%
SplunkDatabricksRevolut+13
Easy·15 companies·Max freq 89%·Acc 65.6%
CareemWiproAccenture+12
Easy·15 companies·Max freq 78%·Acc 51.5%
Arista NetworksAirbnbNetflix+12
Medium·13 companies·Max freq 100%·Acc 50.1%
CoupangAppDynamicsBitGo+10
Medium·13 companies·Max freq 100%·Acc 0.6%
FlipkartRokuPhonePe+10
Medium·13 companies·Max freq 74%·Acc 0.5%
AdobeAmazonServiceNow+10
Medium·12 companies·Max freq 100%·Acc 45.0%
Pony.aiPony.aiUrban Company+9
Easy·12 companies·Max freq 100%·Acc 48.4%
OPPOtcsGoogle+9
Hard·12 companies·Max freq 69%·Acc 39.0%
SpotifyMetaDatadog+9
Hard·11 companies·Max freq 100%·Acc 70.2%
PhonePeWinZOLyft+8
Hard·11 companies·Max freq 88%·Acc 69.2%
MathWorksChubbMorgan Stanley+8
Medium·10 companies·Max freq 100%·Acc 46.4%
BaiduHarnessTikTok+7
Hard·10 companies·Max freq 95%·Acc 34.7%
SamsungTexas InstrumentseBay+7
Medium·10 companies·Max freq 92%·Acc 75.4%
InMobiRobloxDeliveroo+7
Medium·10 companies·Max freq 75%·Acc 65.7%
ArcesiumJosh TechnologyByteDance+7
Medium·10 companies·Max freq 63%·Acc 43.2%
IBMWalmart LabsAmazon+7
Hard·9 companies·Max freq 100%·Acc 32.9%
DevRevPhonePeGoldman Sachs+6
Medium·9 companies·Max freq 75%·Acc 54.6%
HubspotRobloxSalesforce+6
Medium·8 companies·Max freq 100%·Acc 64.1%
NutanixCapital OneIBM+5
Medium·8 companies·Max freq 100%·Acc 71.3%
YandexVKtcs+5
Medium·8 companies·Max freq 100%·Acc 64.8%
AetionBaiduIBM+5
Medium·8 companies·Max freq 89%·Acc 0.7%
EYBloombergNvidia+5
Hard·8 companies·Max freq 88%·Acc 24.9%
NetflixAirbnbPalantir+5
Medium·8 companies·Max freq 50%·Acc 65.7%
RobloxVisaTikTok+5
Medium·7 companies·Max freq 100%·Acc 0.6%
MakeMyTripCitadelRippling+4
Medium·7 companies·Max freq 100%·Acc 60.0%
SamsaraeBayCapital One+4
Medium·7 companies·Max freq 100%·Acc 64.4%
CashfreeAT&TAmazon+4
Easy·7 companies·Max freq 100%·Acc 76.9%
QuoraVisaMicrosoft+4
Medium·7 companies·Max freq 88%·Acc 53.6%
GrammarlyLinkedInBloomberg+4
Hard·7 companies·Max freq 88%·Acc 31.3%
CoupangTikTokGoogle+4
Easy·7 companies·Max freq 88%·Acc 0.8%
Walmart LabsMorgan StanleyMeta+4
Medium·7 companies·Max freq 88%·Acc 51.5%
CitadelNetflixPalantir+4
Medium·7 companies·Max freq 75%·Acc 74.4%
DE ShawBloombergMicrosoft+4
Hard·7 companies·Max freq 69%·Acc 0.5%
JuspayUbertcs+4
Easy·7 companies·Max freq 67%·Acc 0.8%
opentextAkamaiAmazon+4
Hard·7 companies·Max freq 63%·Acc 0.6%
General MotorsMetaInfosys+4
Medium·7 companies·Max freq 50%·Acc 73.4%
LinkedInGoldman SachsAmazon+4
Medium·6 companies·Max freq 100%·Acc 0.5%
Thomson ReutersRipplingPayPal+3
Medium·6 companies·Max freq 100%·Acc 64.8%
PaytmGoogleBloomberg+3
50 displayed (of 50 matching)Filtered: All Companies

Top Companies Testing Sliding Window

Browse company-specific interview problem lists and recency breakdowns:

Explore All 22 DSA Coding Patterns

Master core algorithmic patterns tested in FAANG & Big Tech coding interviews.

Patterns Hub

Sliding Window frequently asked questions

What is the Sliding Window pattern in coding interviews?

Dynamic and fixed-size windows over contiguous subarrays or substrings It is categorized under Fundamentals and features 147 curated interview problems across Easy (16), Medium (93), and Hard (38) difficulties.

Which tech companies frequently test Sliding Window?

Companies frequently asking Sliding Window questions include Google, Amazon, Meta, Microsoft, Bloomberg, TikTok.

How do I master the Sliding Window pattern?

Start by studying the algorithmic strategy and template code, then practice Easy and Medium problems before attempting Hard problems under timed conditions.