class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param num int整型vector
* @param size int整型
* @return int整型vector
*/
vector<int> maxInWindows(vector<int>& num, int size) {
vector<int> return_;
if (size == 0) return return_;
int len = num.size();
int i, j;
int max_pos = -1;//存储当前滑动窗口中的最大值位置
for (i = size - 1; i < len; i++) {
//滑动窗口向前移动一格后,
//上一个窗口的最大值位置还在目前窗口以内,则对比窗口新加入的元素是否为最大值
//若上个窗口的最大值位置不再目前窗口以内,则对窗口内所有元素进行遍历找出最大值位置
if (max_pos > i - size){//在窗口内
if (num[i] >= num[max_pos]) max_pos = i;
} else {//不在窗口内
max_pos = i - size + 1;
for (j = i - size + 2; j <= i; j++)
if (num[j] >= num[max_pos]) max_pos = j;
}
return_.push_back(num[max_pos]); //插入当前窗口的最大值位置
}
return return_;
}
};