题目:滑动窗口最大值

maxSlidingWindow()

 1vector<int> maxSlidingWindow(vector<int>& nums, int k)
 2{
 3    int n = nums.size();
 4    std::vector<int> res(n - k + 1);
 5    std::deque<int> dq;
 6
 7    for(int i = 0; i < n; i++)
 8    {
 9        while(!dq.empty() && nums[dq.back()] <= nums[i])
10        {
11            dq.pop_back();
12        }
13        dq.push_back(i);
14
15        int left = i - k + 1;
16        if(dq.front() < left)
17        {
18            dq.pop_front();
19        }
20
21        if(0 <= left)
22        {
23            res[left] = (nums[dq.front()]);
24        }
25    }
26    return res;
27}

原文:hard