DSA: subarray

Intuition
Grow and shrink the window based on some condition. Often paired with a hash map.

Implementation

#general structure of sliding win
 
array = [1, 2, 3, 4]
state_of_the_window = {}
l = 0
for r in range(len(array)):
	curr = array[r]
	state_of_the_window[curr] = state_of_the_window.get(curr, 0) + 1
 
	while some_condition_true:
		state_of_the_window[array[l]] -= 1
		l -= 1

Visual