例子:
给出一个整形数组,例如arr = {5,4,3,5,6,7,6},窗口大小为w=3,窗口每次向右移动一位,输出每个窗口中最大值组成的数组。
[5,4,3,]5,6,7,6 窗口最大值为5
5,[4,3,5,]6,7,6 窗口最大值为5
5,4,[3,5,6,]7,6 窗口最大值为6
5,4,3,[5,6,7,]6 窗口最大值为7
5,4,3,5,[6,7,6] 窗口最大值为7
则输出的数组为{5,5,6,7,7};如果数组长度为n, 窗口大小为w, 则一共产生n-w+1个窗口的最大值
要求:
实现一个函数。
Input:整型数组arr, 窗口大小为w
Output: 一个长度为n-w+1的数组res, resp[i]表示每一种窗口下的最大值
普通的算法时间复杂度为O(n*w), 尝试时间复杂度O(n)