Algorithm


Problem Name: Deque-STL

Problem Link: https://www.hackerrank.com/challenges/deque-stl/problem?isFullScreen=true

In this HackerRank Functions in C++ programming problem solution,

Double ended queue or Deque(part of C++ STL) are sequence containers with dynamic sizes that can be expanded or contracted on both ends (either its front or its back). The member functions of deque that are mainly used are:

 

  • Deque Template:

    std::deque<value_type>
    
  • Declaration:

    deque<int> mydeque; //Creates a double ended queue of deque of int type
    
  • Size

    int length = mydeque.size(); //Gives the size of the deque
    
  • Push

    mydeque.push_back(1); //Pushes element at the end
    mydeque.push_front(2); //Pushes element at the beginning
    
  • Pop

    mydeque.pop_back(); //Pops element from the end
    mydeque.pop_front(); //Pops element from the beginning
    
  • Empty

    mydeque.empty() //Returns a boolean value which tells whether the deque is empty or not
    

 

To know more about deque, click here

 

Given a set of arrays of size N and an integer K , you have to find the maximum integer for each and every contiguous subarray of size K for each of the given arrays.  

Input Format

First line of input will contain the number of test cases T. For each test case, you will be given the size of array N and the size of subarray to be used K. This will be followed by the elements of the array Ai.

Constraints

1 <= T <= 1000

1 <= N <= 10000

1 <= K <= N

1 <= Ai  <= 10000, where Ai is the i**th element in the array A.

Output Format

For each of the contiguous subarrays of size K of each array, you have to print the maximum integer.

Sample Input

2
5 2
3 4 6 3 4
7 4
3 4 5 8 1 4 10

Sample Output

4 6 6 4
8 8 8 10

Explanation

For the first case, the contiguous subarrays of size 2 are {3,4},{4,6},{6,3} and {3,4}. The 4 maximum elements of subarray of size 2 are: 4 6 6 4.

For the second case,the contiguous subarrays of size 4 are {3,4,5,8},{4,5,8,1},{5,8,1,4} and {8,1,4,10}. The 4 maximum element of subarray of size 4 are: 8 8 8 10.

 

 

 

 

Code Examples

#1 Code Example with C++ Programming

Code - C++ Programming


#include <iostream>
#include <algorithm> 
#include <deque>
using namespace std;
void printKMax(int arr[], int n, int k){
    deque < int> q;
	for(int i = 0; i  <  n; i++)
    {
		for(;!q.empty() && arr[i] > q.back();)
            q.pop_back();  
		q.push_back(arr[i]);  
		if(i >= k && q.front() == arr[i-k])
            q.pop_front();  
		if(i >= k-1)
            printf(i < n-1 ? "%d ":"%d\n", q.front());
	}
}
int main(>{
  
   int t;
   cin >> t;
   while(t>0) {
      int n,k;
       cin >> n >> k;
       int i;
       int arr[n];
       for(i=0;i < n;i++)
            cin >> arr[i];
       printKMax(arr, n, k);
       t--;
     }
     return 0;
}
Copy The Code & Try With Live Editor

Input

x
+
cmd
2 5 2 3 4 6 3 4 7 4 3 4 5 8 1 4 10

Output

x
+
cmd
4 6 6 4 8 8 8 10
Advertisements

Demonstration


Previous
[Solved] Virtual Functions in C++ solution in Hackerrank - Hacerrank solution C++
Next
[Solved] Hotel Prices in C++ solution in Hackerrank - Hacerrank solution C++