class Solution {
public:
void UpdateR(deque<int> &deq, vector<int> nums, int R)
{
while(deq.size()!=0 && nums[R] >= nums[deq.back()])
{
deq.pop_back();
}
deq.push_back(R);
}
void UpdateL(deque<int> &deq, int L)
{
if(L > deq.front())
deq.pop_front();
}
vector<int> maxSlidingWindow(vector<int>& nums, int k) {
deque<int> deq;
for(int i = 0; i< k; i++)
{
UpdateR(deq, nums, i);
}
int L = 0 ;
int R = k-1;
vector<int> result;
while(R!=nums.size()-1)
{
result.push_back(nums[deq.front()]);
UpdateR(deq, nums, ++R);
UpdateL(deq, ++L);
}
result.push_back(nums[deq.front()]);
return result;
}
};
窗口R右移逻辑
窗口L右移逻辑