fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <deque>
  4.  
  5. std::vector<int> maxSlidingWindow(const std::vector<int>& nums, int k) {
  6. std::vector<int> result;
  7. std::deque<int> dq;
  8.  
  9. for (int i = 0; i < nums.size(); ++i) {
  10. while (!dq.empty() && dq.front() < i - k + 1)
  11. dq.pop_front();
  12.  
  13. while (!dq.empty() && nums[dq.back()] < nums[i])
  14. dq.pop_back();
  15.  
  16. dq.push_back(i);
  17.  
  18. if (i >= k - 1)
  19. result.push_back(nums[dq.front()]);
  20. }
  21.  
  22. return result;
  23. }
  24.  
  25. int main() {
  26. std::vector<int> nums1 = {1, 3, -1, -3, 5, 3, 6, 7};
  27. int k1 = 3;
  28. std::vector<int> result1 = maxSlidingWindow(nums1, k1);
  29.  
  30. std::cout << "Example 1 Output: ";
  31. for (int val : result1)
  32. std::cout << val << " ";
  33. std::cout << std::endl;
  34.  
  35. std::vector<int> nums2 = {1};
  36. int k2 = 1;
  37. std::vector<int> result2 = maxSlidingWindow(nums2, k2);
  38.  
  39. std::cout << "Example 2 Output: ";
  40. for (int val : result2)
  41. std::cout << val << " ";
  42. std::cout << std::endl;
  43.  
  44. return 0;
  45. }
  46.  
Success #stdin #stdout 0s 5304KB
stdin
Standard input is empty
stdout
Example 1 Output: 3 3 5 5 6 7 
Example 2 Output: 1