Sliding Window
The sliding window technique efficiently processes contiguous subarrays or substrings, often reducing time complexity from O(n²) to O(n).
Fixed size window problems
- Window Size K: Process all subarrays of fixed size k
- Maximum in Window: Find maximum element in each window
- Minimum in Window: Find minimum element in each window
- Average in Window: Calculate average for each window
Variable size window problems
- Longest Subarray: Find longest subarray satisfying condition
- Shortest Subarray: Find shortest subarray satisfying condition
- Target Sum: Find subarray with specific sum
- Character Count: Substring with specific character frequencies
Maximum/minimum in window
- Sliding Maximum: Efficiently find maximum in each window
- Sliding Minimum: Efficiently find minimum in each window
- Deque Approach: Using double-ended queue for optimization
- Monotonic Queue: Maintaining monotonic property
Substring problems
- Longest Substring: Without repeating characters
- Shortest Substring: Containing all characters of pattern
- Anagram Substring: Find all anagrams of pattern in string
- Character Frequency: Substrings with specific character counts
Longest/shortest subarray
- Longest Subarray: With sum ≤ target
- Shortest Subarray: With sum ≥ target
- Longest Subarray: With at most k distinct elements
- Shortest Subarray: With at least k distinct elements