This question evaluates a candidate's understanding of streaming algorithms and efficient data-structure techniques for maintaining sliding-window minima, measuring competency in algorithmic thinking, time and space complexity, and online processing.
You are given an integer array nums of length n and an integer window size k.
You scan nums from left to right (streaming). At each index i, you must output the minimum value in the most recent window of up to k elements ending at i.
Formally, define:
L = max(0, i - k + 1)
nums[L..i]
ans[i] = min(nums[L..i])
Return the array ans of length n.
If nums has 10 values and k = 3, you must still return 10 outputs (one per element), not n-k+1.
1 <= n <= 2 * 10^5
1 <= k <= 10^5
nums[i]
fits in 32-bit signed integer
Design an algorithm that works in a streaming fashion (produce ans[i] as soon as you read nums[i]) and runs in O(n) time.