Find max in sliding window

by Krishna Ananthi

JavaScript

function maxSlidingWindow(nums, k) {
    const heap = new MaxPriorityQueue(x => x[0]);  // Priority Queue based on value
    const output = [];
    const length = nums.length;

    for (let i = 0; i < length; i++) {
        heap.enqueue([nums[i], i]);  // store [value, index]
				console.log(heap);
        if (i >= k - 1) {  // start recording output only when window is full
            // Remove elements that are out of the window
            while (heap.front()[1] <= i - k) {
                heap.dequeue();
            }
            // The current max is at the front of the heap
            output.push(heap.front()[0]);
        }
    }

    return output;
}
console.log(maxSlidingWindow([1, 3, -1, -3, 5, 3, 6, 7], 3))