Sliding Window Target: 15s
Fixed window: add right, remove left when size > k. Variable window: expand right, shrink left until valid.
FIXED vs VARIABLE SIZE SLIDING WINDOW
──────────────────────────────────────
FIXED SIZE (window = k):
for i in range(len(a)):
# add a[i] to window
if i >= k:
# remove a[i-k] from window
if i >= k - 1:
# window is full, record answer
Examples: max sum of k consecutive, moving average
VARIABLE SIZE (expand/shrink):
l = 0
for r in range(len(a)):
# expand: add a[r]
while window_invalid():
# shrink: remove a[l]
l += 1
# update answer with window [l..r]
Examples: longest substring without repeats,
minimum window substring
DECISION:
"Exactly k elements" → fixed window
"At most k distinct" → variable, shrink when > k
"Minimum window with X" → variable, shrink when valid
"Maximum window with Y" → variable, shrink when invalid
Type it from memory. Go.