class Solution
{public:vector<int> maxSlidingWindow(vector<int>& nums, int k)
{ vector<int> res;
if (nums.size() == 0)
{
return res;
}
if (k == 1)
{
return nums;
}
deque<int> maxque;
maxque.push_back(nums[0]);
int maxk = nums[0];
for (int i = 1; i < k; i++)
{
if (i == nums.size())
{
res.push_back(maxk);
return res;
}
if (maxk < nums[i])
{
maxk = nums[i];
}
while (!maxque.empty() && nums[i] > maxque.back())
maxque.pop_back();
}
maxque.push_back(nums[i]);
}
res.push_back(maxk);
for (int i = k; i < nums.size(); i++)
{
if (nums[i - k] == maxque.front())
{ maxque.pop_front(); }
while (!maxque.empty() && nums[i] > maxque.back())
maxque.push_back(nums[i]);
res.push_back(maxque.front()); }
return res;}};