题目:滑动窗口最大值
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