#include <iostream>
#include <vector>
#include <deque>
using namespace std;
class Solution {
public:
vector<int> maxSlidingWindow(vector<int>& nums, int k) {
deque<int> dq;
vector<int> res;
for(int i = 0; i < nums.size(); i++) {
if (dq.front() == i - k) dq.pop_front();
while (!dq.empty() && nums[dq.back()] < nums[i]) {
dq.pop_back();
}
dq.push_back(i);
if (i >= k - 1) res.push_back(nums[dq.front()]);
}
return res;
}
};
int main() {
Solution solution;
vector<int> nums = {1, 3, -1, -3, 5, 3, 6, 7};
int k = 3;
vector<int> result = solution.maxSlidingWindow(nums, k);
for (int i = 0; i < result.size(); i++) {
cout << result[i] << " ";
}
cout << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8ZGVxdWU+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNsYXNzIFNvbHV0aW9uIHsKcHVibGljOgogICAgdmVjdG9yPGludD4gbWF4U2xpZGluZ1dpbmRvdyh2ZWN0b3I8aW50PiYgbnVtcywgaW50IGspIHsKICAgICAgICBkZXF1ZTxpbnQ+IGRxOwogICAgICAgIHZlY3RvcjxpbnQ+IHJlczsKICAgICAgICBmb3IoaW50IGkgPSAwOyBpIDwgbnVtcy5zaXplKCk7IGkrKykgewogICAgICAgICAgICBpZiAoZHEuZnJvbnQoKSA9PSBpIC0gaykgZHEucG9wX2Zyb250KCk7CiAgICAgICAgICAgIHdoaWxlICghZHEuZW1wdHkoKSAmJiBudW1zW2RxLmJhY2soKV0gPCBudW1zW2ldKSB7CiAgICAgICAgICAgICAgICBkcS5wb3BfYmFjaygpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRxLnB1c2hfYmFjayhpKTsKICAgICAgICAgICAgaWYgKGkgPj0gayAtIDEpIHJlcy5wdXNoX2JhY2sobnVtc1tkcS5mcm9udCgpXSk7CiAgICAgICAgfQogICAgICAgIHJldHVybiByZXM7CiAgICB9Cn07CmludCBtYWluKCkgewogICAgU29sdXRpb24gc29sdXRpb247CiAgICB2ZWN0b3I8aW50PiBudW1zID0gezEsIDMsIC0xLCAtMywgNSwgMywgNiwgN307CiAgICBpbnQgayA9IDM7CiAgICB2ZWN0b3I8aW50PiByZXN1bHQgPSBzb2x1dGlvbi5tYXhTbGlkaW5nV2luZG93KG51bXMsIGspOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCByZXN1bHQuc2l6ZSgpOyBpKyspIHsKICAgICAgICBjb3V0IDw8IHJlc3VsdFtpXSA8PCAiICI7CiAgICB9CiAgICBjb3V0IDw8IGVuZGw7CiAgICByZXR1cm4gMDsKfQo=