Given an array nums, there is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the window. Each time the sliding window moves right by one position. For example, Given nums  1,3,1,3,5,3,6,7, and k  3. Window position                Max                 1  3  1 3  5  3  6  7       3 1 3  1  3 5  3  6  7       3 1  3 1  3  5 3  6  7       5 1  3  1 3  5  3 6  7       5 1  3  1  3 5  3  6 7       6 1  3  1  3  5 3  6  7      7 Therefore, return the max sliding window as 3,3,5,5,6,7. :type nums: Listint :type k: int :rtype: Listint
import collections


def max_sliding_window(nums, k):
    """
    :type nums: List[int]
    :type k: int
    :rtype: List[int]
    """
    if not nums:
        return nums
    queue = collections.deque()
    res = []
    for num in nums:
        if len(queue) < k:
            queue.append(num)
        else:
            res.append(max(queue))
            queue.popleft()
            queue.append(num)
    res.append(max(queue))
    return res
