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