class Solution {
public:
vector<int> maxInWindows(const vector<int>& num, unsigned int size)
{
vector<int> res;
auto length = num.size();
if (size < 1 || size > length) return res;
// 中间容器初始化
queue<int> iqu;
int i = 0;
while (i != size){
iqu.push(num[i]);
++i;
}
while (i != length){
res.push_back(findqueuemax(iqu));
iqu.pop();
iqu.push(num[i]);
++i;
}
res.push_back(findqueuemax(iqu)); // 少最后一组要补上
return res;
}
int findqueuemax(queue<int> iqu){
int res = INT_MIN;
int length = iqu.size();
for (int i = 0; i != length; ++i){
if (res < iqu.front())
res = iqu.front();
iqu.push(iqu.front());
iqu.pop();
}
return res;
}
};1、题目要求在数组上滑动窗口,自然想到中间容器用queue,出队入队完成窗口滑动
2、再一个问题就是找中间容器的max,注意!!!queue不能下标访问!!!
findqueuemax函数对中间queue遍历,寻找max。
欢迎交流指正!!!

京公网安备 11010502036488号