Dynamic Programming21 sections · 916 units
Open in Course

Shortest Subarray - Walkthrough

Tracing the prefix sum approach

Find shortest subarray with sum K\geq K. Use prefix sums: sum[l..r]=prefix[r+1]prefix[l]Ksum[l..r] = prefix[r+1] - prefix[l] \geq K. We want prefix[r+1]prefix[l]Kprefix[r+1] - prefix[l] \geq K, i.e., prefix[l]prefix[r+1]Kprefix[l] \leq prefix[r+1] - K.

For each rr, find smallest valid ll. Maintain monotonic increasing deque of prefix indices. For each rr, pop front while prefix[front]prefix[r]Kprefix[front] \leq prefix[r] - K. After popping, if queue non-empty, the popped indices give valid subarrays. Track minimum length. Also pop back if prefix[r]prefix[back]prefix[r] \leq prefix[back].