[待]生成窗口最大值数组

例子:

给出一个整形数组,例如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)

posted @ 2017-05-09 16:27  蒋励  阅读(110)  评论(0编辑  收藏  举报