Sliding Window
DSA · Arrays & Stringssyntax
Maintain a window [left..right] and expand/shrink to satisfy a condition.
Fixed-size window: move both pointers together.
Variable-size window: expand right, shrink left when constraint violated.example
// JavaScript — Max sum subarray of size k
function maxSumWindow(arr, k) {
let windowSum = 0, maxSum = -Infinity;
for (let i = 0; i < arr.length; i++) {
windowSum += arr[i];
if (i >= k) windowSum -= arr[i - k];
if (i >= k - 1) maxSum = Math.max(maxSum, windowSum);
}
return maxSum;
}
# Python — Max sum subarray of size k
def max_sum_window(arr, k):
window_sum = 0
max_sum = float('-inf')
for i in range(len(arr)):
window_sum += arr[i]
if i >= k:
window_sum -= arr[i - k]
if i >= k - 1:
max_sum = max(max_sum, window_sum)
return max_sumoutput
max_sum_window([2,1,5,1,3,2], 3) → 9 (subarray [5,1,3])Note Time O(n), Space O(1). Sliding window converts O(n*k) brute force to O(n). For variable-size windows (e.g., longest substring without repeats), use a hash set to track window contents. Always clarify: is the window fixed or variable size?