Why Monotonic Deque Works

Understanding the deque invariant.

Deque maintains decreasing values (by index).

Invariant: If i<ji < j and nums[i]<nums[j]nums[i] < nums[j], ii can never be max while jj exists. Remove ii.

Front: Current window's max index.

Example: [1,3,1,3,5][1,3,-1,-3,5], k=3k=3

  • i=0i=0: emptyempty, push : [0][0]
  • i=1i=1: 3>13>1, pop, push: [1][1]
  • i=2i=2: push: [1,2][1,2]. Max=33
  • i=3i=3: push: [1,2,3][1,2,3]. Max=33
  • i=4i=4: 5>5>all, pop all: [4][4]. Max=55