class Solution { public: vector<int> maxInWindows(const vector<int>& num, unsigned int size) { int que[10010], h = 0, t = -1; memset(que, 0, sizeof(que)); vector<int>ans; for (int i = 0; i < num.size(); i++) { if (abs(i - que[h]) + 1 > size)h++; if (h > t)que[++t] = i; while (h <= t && num[i] >= num[que[t]])t--; que[++t] = i; if (i >= size - 1)ans.push_back(num[que[h]]); } return ans; } };