//你可以假设 k 总是有效的,1 ≤ k ≤ 输入数组的大小,且输入数组不为空。
class Solution {
public:
vector<int> maxSlidingWindow(vector<int>& nums, int k) {
int n=nums.size();
vector<int>ans;
deque<int>rec;
for(int i=0;i<n;i++)
{ //如果当前front下标超出窗口就pop为新加入元素个位置。
while(!rec.empty()&&(i-rec.front())>=k)rec.pop_front();
while(!rec.empty()&&nums[rec.back()]<=nums[i])rec.pop_back();//如果新加入元素比队尾元素大那么把
rec.push_back(i); //前面所以比它小的都pop掉,因为新元素
if(i>=k-1)ans.push_back(nums[rec.front()]); //是后加入的,
}//然后这里因为题目给的k是《=数组元素的,不会出现数组元素个数比k小这种情况,如果题目改了
return ans; //这里就需要重新进行特判添加元素;
}
};