Sliding Window

Fundamentals

Dynamic and fixed-size windows over contiguous subarrays or substrings

142 problems·17 Easy·88 Medium·37 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·112 companies·Max freq 100%·Acc 39.4%
PornhubWissen TechnologyPhilips+109
Hard·52 companies·Max freq 100%·Acc 49.0%
CitadelblinkitLINE+49
Hard·40 companies·Max freq 100%·Acc 0.5%
Wissen TechnologyNeetCode 150Lyft+37
Medium·25 companies·Max freq 100%·Acc 60.1%
CREDPocket GemsNeetCode 150+22
Medium·22 companies·Max freq 100%·Acc 54.7%
YatraSquarepoint CapitalSamsung+19
Medium·22 companies·Max freq 88%·Acc 68.0%
LinkedInRokuMeta+19
Medium·20 companies·Max freq 88%·Acc 49.9%
YandexCoupangCashfree+17
Medium·19 companies·Max freq 88%·Acc 52.2%
BCGCitigroupCitigroup+16
Medium·18 companies·Max freq 95%·Acc 49.2%
NeetCode 150NeetCode 150Yandex+15
Hard·18 companies·Max freq 88%·Acc 68.6%
HashedInRobloxSquarepoint Capital+15
Medium·17 companies·Max freq 100%·Acc 57.8%
UberMolocoPhonePe+14
Medium·15 companies·Max freq 88%·Acc 54.1%
SplunkDatabricksRevolut+12
Easy·15 companies·Max freq 78%·Acc 51.5%
Arista NetworksAirbnbNetflix+12
Easy·14 companies·Max freq 89%·Acc 65.6%
CareemAccentureCognizant+11
Medium·13 companies·Max freq 66%·Acc 51.7%
AdobeAmazonServiceNow+10
Medium·12 companies·Max freq 100%·Acc 50.1%
CoupangAppDynamicsBitGo+9
Medium·12 companies·Max freq 100%·Acc 45.0%
Pony.aiPony.aiUrban Company+9
Hard·12 companies·Max freq 67%·Acc 39.0%
SpotifyMetaDatadog+9
Hard·11 companies·Max freq 100%·Acc 70.2%
WinZOPhonePeLyft+8
Medium·11 companies·Max freq 100%·Acc 58.0%
FlipkartPhonePeSprinklr+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 93%·Acc 34.7%
SamsungTexas InstrumentseBay+7
Medium·10 companies·Max freq 75%·Acc 65.7%
ArcesiumJosh TechnologyByteDance+7
Medium·9 companies·Max freq 75%·Acc 0.5%
RobloxHubspotSalesforce+6
Medium·9 companies·Max freq 75%·Acc 75.4%
RobloxDeliverooTikTok+6
Medium·8 companies·Max freq 100%·Acc 71.3%
YandexVKtcs+5
Hard·8 companies·Max freq 100%·Acc 32.9%
DevRevPhonePeGoldman Sachs+5
Hard·8 companies·Max freq 88%·Acc 24.9%
NetflixAirbnbPalantir+5
Medium·7 companies·Max freq 100%·Acc 64.1%
NutanixCapital OneIBM+4
Easy·7 companies·Max freq 100%·Acc 64.8%
LiveRampZS AssociatesGoogle+4
Medium·7 companies·Max freq 100%·Acc 64.8%
BaiduAetionIBM+4
Medium·7 companies·Max freq 100%·Acc 64.4%
AT&TCashfreeAmazon+4
Medium·7 companies·Max freq 88%·Acc 51.5%
CitadelNetflixPalantir+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 81%·Acc 53.6%
GrammarlyLinkedInBloomberg+4
Hard·7 companies·Max freq 63%·Acc 0.5%
UberJuspaytcs+4
Medium·7 companies·Max freq 50%·Acc 65.7%
RobloxTikTokUber+4
Medium·7 companies·Max freq 41%·Acc 69.3%
BloombergNvidiaAmazon+4
Medium·6 companies·Max freq 100%·Acc 0.6%
SamsaraeBayCapital One+3
Hard·6 companies·Max freq 100%·Acc 38.3%
NuroAuroraAnduril+3
Medium·6 companies·Max freq 100%·Acc 56.7%
MakeMyTripCitadelTikTok+3
Medium·6 companies·Max freq 100%·Acc 64.8%
PaytmBloombergMicrosoft+3
Hard·6 companies·Max freq 100%·Acc 48.6%
Fractal AnalyticsMicrosoftMeta+3
Medium·6 companies·Max freq 100%·Acc 52.1%
Thomson ReutersRipplingPayPal+3
Easy·6 companies·Max freq 94%·Acc 66.4%
TinkoffAmazonGoogle+3
Medium·6 companies·Max freq 88%·Acc 62.4%
AdobeBloombergMeta+3
Medium·6 companies·Max freq 75%·Acc 74.4%
DE ShawBloombergMicrosoft+3
Easy·6 companies·Max freq 67%·Acc 79.4%
opentextMetaAmazon+3
Hard·6 companies·Max freq 63%·Acc 59.9%
General MotorsMetaGoogle+3
Medium·6 companies·Max freq 50%·Acc 73.4%
LinkedInGoldman SachsAmazon+3
Medium·6 companies·Max freq 50%·Acc 80.4%
UberMicrosoftGoogle+3
Medium·6 companies·Max freq 39%·Acc 62.3%
AmazontcsMicrosoft+3
Easy·5 companies·Max freq 100%·Acc 68.8%
DailyHuntHPGoogle+2
Easy·5 companies·Max freq 100%·Acc 76.9%
QuoraVisaAmazon+2
Hard·5 companies·Max freq 89%·Acc 43.8%
eBayAirbnbSalesforce+2
Hard·5 companies·Max freq 77%·Acc 62.2%
PinterestGoogleMicrosoft+2
Medium·5 companies·Max freq 63%·Acc 53.6%
IBMGoogleMeta+2
Medium·5 companies·Max freq 50%·Acc 59.7%
UberVisaMeta+2
Medium·5 companies·Max freq 39%·Acc 57.1%
TikTokMetaGoogle+2
Medium·5 companies·Max freq 38%·Acc 58.0%
GoogleAmazonBloomberg+2
Easy·5 companies·Max freq 38%·Acc 76.1%
GoogleBloombergMeta+2
Medium·5 companies·Max freq 30%·Acc 51.9%
GoogleAmazonMicrosoft+2
Medium·5 companies·Max freq 25%·Acc 61.9%
AmazonBloombergGoogle+2
Hard·4 companies·Max freq 100%·Acc 54.7%
JioAmerican ExpressAmazon+1
Medium·4 companies·Max freq 100%·Acc 50.2%
MitsogoMetaMicrosoft+1
Medium·4 companies·Max freq 100%·Acc 70.2%
ArcesiumMetaAmazon+1
Hard·4 companies·Max freq 100%·Acc 61.5%
TeradataAmazonGoogle+1
Medium·4 companies·Max freq 88%·Acc 46.4%
DuolingoMetaBloomberg+1
Medium·4 companies·Max freq 81%·Acc 36.2%
LTIMindtreeHoneywellRubrik+1
Hard·4 companies·Max freq 67%·Acc 42.4%
TuringMicrosoftGoogle+1
Medium·4 companies·Max freq 63%·Acc 76.0%
TikTokAmazonGoogle+1
Medium·4 companies·Max freq 55%·Acc 47.9%
SalesforceAmazonMeta+1
Easy·4 companies·Max freq 38%·Acc 64.5%
MicrosoftBloombergAmazon+1
Medium·4 companies·Max freq 29%·Acc 40.2%
GoogleMetaAmazon+1
Medium·4 companies·Max freq 27%·Acc 52.1%
YandexGoogleMeta+1
Medium·4 companies·Max freq 25%·Acc 35.6%
GoogleAmazonBloomberg+1
Medium·4 companies·Max freq 13%·Acc 62.1%
BloombergMetaGoogle+1
Medium·4 companies·Max freq 13%·Acc 58.5%
MetaAmazonMicrosoft+1
Easy·3 companies·Max freq 100%·Acc 63.6%
QuoraPostmatesGoogle
Hard·3 companies·Max freq 100%·Acc 39.4%
Deutsche BankPhonePeGoogle
Easy·3 companies·Max freq 100%·Acc 69.3%
SamsaraAmazonGoogle
Medium·3 companies·Max freq 100%·Acc 41.3%
Wells FargoAkuna CapitalYelp
Medium·3 companies·Max freq 92%·Acc 36.1%
LTIMindtreeGoogleAmazon
Medium·3 companies·Max freq 91%·Acc 61.3%
ExpediaTikTokAmazon
Medium·3 companies·Max freq 88%·Acc 38.4%
Palo Alto NetworksMathWorksMicrosoft
Medium·3 companies·Max freq 82%·Acc 61.0%
SprinklrAmazonGoogle
Medium·3 companies·Max freq 38%·Acc 61.8%
GoogleMetaMicrosoft
Medium·3 companies·Max freq 31%·Acc 0.4%
InfosysAmazonMeta
Medium·3 companies·Max freq 28%·Acc 58.5%
GoogleMetaAmazon
Medium·3 companies·Max freq 25%·Acc 67.7%
AmazonMicrosoftGoogle
Hard·3 companies·Max freq 25%·Acc 38.6%
AmazonMetaGoogle
Hard·3 companies·Max freq 25%·Acc 53.9%
GoogleAmazonBloomberg
Hard·3 companies·Max freq 16%·Acc 0.6%
GoogleAmazonMeta
Medium·3 companies·Max freq 13%·Acc 51.5%
BloombergAmazonGoogle
Medium·3 companies·Max freq 13%·Acc 40.7%
BloombergAmazonMicrosoft
Medium·3 companies·Max freq 13%·Acc 49.3%
AmazonMicrosoftGoogle
Medium·2 companies·Max freq 100%·Acc 44.7%
NutanixGoogle
Medium·2 companies·Max freq 100%·Acc 62.3%
cienaMicrosoft
Hard·2 companies·Max freq 100%·Acc 56.5%
Akuna CapitalGoogle
Hard·2 companies·Max freq 67%·Acc 38.8%
InMobiAmazon
Medium·2 companies·Max freq 63%·Acc 39.3%
RubrikGoogle
Medium·2 companies·Max freq 47%·Acc 25.7%
AmazonGoogle
Hard·2 companies·Max freq 27%·Acc 30.5%
MicrosoftAmazon
Hard·2 companies·Max freq 25%·Acc 24.9%
GoogleMicrosoft
Easy·2 companies·Max freq 13%·Acc 32.3%
MetaMicrosoft
Hard·2 companies·Max freq 13%·Acc 41.2%
BloombergGoogle
Easy·1 companies·Max freq 100%·Acc 76.3%
ZScaler
Hard·1 companies·Max freq 100%·Acc 33.2%
ZScaler
Easy·1 companies·Max freq 100%·Acc 44.8%
Mitsogo
Medium·1 companies·Max freq 100%·Acc 41.1%
Accolite
Hard·1 companies·Max freq 100%·Acc 30.9%
Meesho
Medium·1 companies·Max freq 77%·Acc 32.4%
DE Shaw
Hard·1 companies·Max freq 76%·Acc 36.1%
PayPal
Medium·1 companies·Max freq 75%·Acc 50.1%
DE Shaw
Medium·1 companies·Max freq 64%·Acc 45.6%
Cisco
Hard·1 companies·Max freq 63%·Acc 21.8%
TikTok
Medium·1 companies·Max freq 63%·Acc 56.5%
Salesforce
Medium·1 companies·Max freq 51%·Acc 75.9%
Yandex
Medium·1 companies·Max freq 50%·Acc 38.0%
Uber
Medium·1 companies·Max freq 50%·Acc 57.4%
Uber
Hard·1 companies·Max freq 50%·Acc 67.8%
Uber
Medium·1 companies·Max freq 25%·Acc 59.0%
Meta
Medium·1 companies·Max freq 25%·Acc 76.5%
Amazon
Easy·1 companies·Max freq 25%·Acc 56.1%
Amazon
Medium·1 companies·Max freq 25%·Acc 77.4%
Amazon
Medium·1 companies·Max freq 25%·Acc 41.4%
Amazon
Hard·1 companies·Max freq 25%·Acc 45.1%
Google
Hard·1 companies·Max freq 25%·Acc 38.0%
Google
Medium·1 companies·Max freq 25%·Acc 36.9%
Google
Medium·1 companies·Max freq 25%·Acc 53.4%
Google
Medium·1 companies·Max freq 25%·Acc 53.9%
Google
Medium·1 companies·Max freq 13%·Acc 43.4%
Amazon
Medium·1 companies·Max freq 13%·Acc 32.0%
Amazon
Medium·1 companies·Max freq 13%·Acc 46.7%
Microsoft
Easy·1 companies·Max freq 13%·Acc 47.0%
Google
Medium·1 companies·Max freq 13%·Acc 56.2%
Google
Medium·1 companies·Max freq 13%·Acc 23.7%
Google
Hard·1 companies·Max freq 13%·Acc 26.5%
Google
Hard·1 companies·Max freq 5%·Acc 0.2%
Meta
Medium·1 companies·Max freq 5%·Acc 0.4%
Google
Showing 142 of 142 problems in Sliding WindowFiltered: All Companies