Article Categories
- All Categories
-
Data Structure
-
Networking
-
RDBMS
-
Operating System
-
Java
-
MS Excel
-
iOS
-
HTML
-
CSS
-
Android
-
Python
-
C Programming
-
C++
-
C#
-
MongoDB
-
MySQL
-
Javascript
-
PHP
Selected Reading
C++ program to find maximum of each k sized contiguous subarray
Suppose we have an array with n elements and a value k. We shall have to find maximum value for each of the contiguous subarray of size k.
So, if the input is like arr = [3,4,6,2,8], k = 3, then the output will be The contiguous subarrays of size 3 are [3,4,6], [4,6,2], [6,2,8], so the maximum elements are 6, 6 and 8.
To solve this, we will follow these steps −
- Define one deque Qi of size k
- for initialize i := 0, when i
- while Qi is not empty and arr[i] >= arr[last element of Qi], do:
- delete last element from Qi
- insert i at the end of Qi
- delete last element from Qi
Example
Let us see the following implementation to get better understanding −
#include#include #include using namespace std; int main(){ vector arr = {3,4,6,2,8}; int k = 3; deque Qi(k); int i; for (i = 0; i = arr[Qi.back()]) Qi.pop_back(); Qi.push_back(i); } for ( ; i = arr[Qi.back()]) Qi.pop_back(); Qi.push_back(i); } cout Input
{3,4,6,2,8}, 3Output
6 6 8
Advertisements
