Data Structure Array: Maximum of all subarrays of size k

http://www.geeksforgeeks.org/maximum-of-all-subarrays-of-size-k/

 1 #include <iostream>

 2 #include <vector>

 3 #include <algorithm>

 4 #include <queue>

 5 #include <stack>

 6 #include <string>

 7 #include <fstream>

 8 #include <map>

 9 using namespace std;

10 

11 void printKMax(int arr[], int n, int k) {

12     deque<int> S;

13     S.push_back(0);

14     for (int i = 1; i < k; i++) {

15         while (!S.empty() && arr[i] >= arr[S.back()]) S.pop_back();

16         S.push_back(i);

17     }

18     for (int i = k; i < n; i++) {

19         cout << arr[S.front()] << " ";

20         while (!S.empty() && i - k >= S.front()) S.pop_front();

21         while (!S.empty() && arr[S.back()] <= arr[i]) S.pop_back();

22         S.push_back(i);

23     }

24     cout << arr[S.front()] << endl;

25 }

26 

27 int main() {

28     int arr[7] = {12, 1, 78, 90, 57, 89, 56};

29     printKMax(arr, 7, 3);

30     return 0;

31 }

 

你可能感兴趣的:(Arrays)