If you're preparing for Java interviews, here's the mental model that made Sliding Window much easier for me:
Don't memorize 20 solutions. Recognize 4 patterns.
Most Sliding Window problems boil down to this:
> Expand β Check β Shrink β Process
π§ Step 1: Ask one question
Is the window size given?
YES β Fixed Window
Example:
Maximum Sum Subarray of Size K
for (int right = k; right < n; right++) { window += arr[right]; window -= arr[right - k];
ans = Math.max(ans, window); }
Think:
ADD right β REMOVE right - k
π Step 2: If K isn't given...
You're probably dealing with a Variable Window.
Typical questions:
Longest valid substring
Shortest valid substring
Longest subarray satisfying a condition
Minimum window satisfying a requirement
Mental model:
right++ β expand left++ β shrink
πΊοΈ Step 3: See "frequency", "count" or "anagram"?
Add a:
Map<Character, Integer> freq = new HashMap<>();
Now your pattern becomes:
Add right β Update frequency β Window invalid? β Remove left β Process window
This handles problems like:
Find All Anagrams in a String
π₯ Step 4: See "without repeating"?
Think:
Variable Window + last seen position
if (lastSeen.containsKey(c)) { left = Math.max(left, lastSeen.get(c) + 1); }
lastSeen.put(c, right);
ans = Math.max(ans, right - left + 1);
That's the classic:
Longest Substring Without Repeating Characters
β‘ My 10-second interview checklist
When I see a new problem, I ask:
1. Contiguous? β Sliding Window may apply.
2. Fixed size K? β Fixed Window.
3. Longest / shortest + condition? β Variable Window.
4. Frequency / anagram / count? β Window + HashMap.
5. Unique elements? β HashMap / Set / last-seen index.
And remember:
> The data structure can change. The window movement usually doesn't.
for (right = 0; right < n; right++) {
add(right);
while (invalid) { remove(left++); }
process(left, right); }
Once you recognize this skeleton, many "different" LeetCode problems start looking like the same problem wearing a different shirt. π
#Java #DSA #CodingInterview #LeetCode #SoftwareEngineering #Algorithms #SlidingWindow #InterviewPreparation #Programming #TechInterview