滑动窗口最大值,c++
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。
欢迎交流指正!!!