Given an array arr[] of size N and an integer K, the task is to find the maximum number of even numbers present in any subarray of size K.
Examples:
Input: arr[] = {2, 3, 5, 4, 7, 6}, K = 3
Output: 2
Explanation:
Subarrays of size K(=3) with maximum count of even numbers are { arr[3], arr[4], arr[5] }
Therefore, the required output is 2Input: arr[] = {4, 3, 2, 6}, K = 2
Output: 2
Naive Approach: The simplest approach to solve this problem is to generate all possible subarrays of size K and count the even numbers in the subarray. Finally, print the maximum count obtained.
Below is the implementation of the above approach:
C++
// C++ program to implement// the above approach#include <bits/stdc++.h>using namespace std;// Function to find the maximum count of// even numbers from all the subarrays of// size Kint maxEvenIntegers(int arr[], int N, int M){ // Stores the maximum count of even numbers // from all the subarrays of size K int ans = 0; // Generate all subarrays of size K for (int i = 0; i <= N - M; i++) { // Store count of even numbers // in current subarray of size K int cnt = 0; // Traverse the current subarray for (int j = 0; j < M; j++) { // If current element // is an even number if (arr[i + j] % 2 == 0) cnt++; } // Update the answer ans = max(ans, cnt); } // Return answer return ans;}// Driver Codeint main(){ int arr[] = { 2, 3, 5, 4, 7, 6 }; int K = 3; // Size of the input array int N = sizeof(arr) / sizeof(arr[0]); cout << maxEvenIntegers(arr, N, K) << endl; return 0;} |
Java
// Java program to implement// the above approachimport java.util.*;class GFG{// Function to find the maximum count of// even numbers from all the subarrays of// size Kstatic int maxEvenIntegers(int arr[], int N, int M){ // Stores the maximum count of even numbers // from all the subarrays of size K int ans = 0; // Generate all subarrays of size K for (int i = 0; i <= N - M; i++) { // Store count of even numbers // in current subarray of size K int cnt = 0; // Traverse the current subarray for (int j = 0; j < M; j++) { // If current element // is an even number if (arr[i + j] % 2 == 0) cnt++; } // Update the answer ans = Math.max(ans, cnt); } // Return answer return ans;}// Driver Codepublic static void main(String[] args){ int arr[] = { 2, 3, 5, 4, 7, 6 }; int K = 3; // Size of the input array int N = arr.length; System.out.print(maxEvenIntegers(arr, N, K) +"\n");}}// This code is contributed by 29AjayKumar |
Python3
# Python3 program to implement# the above approach# Function to find the maximum count of# even numbers from all the subarrays of# size Kdef maxEvenIntegers(arr, N, K): # Stores the maximum count of even numbers # from all the subarrays of size K ans = 0 # Generate all subarrays of size K for i in range(N-K+1): # Store count of even numbers # in current subarray of size K cnt = 0 # Traverse the current subarray for j in range(0, K): if arr[i+j] % 2 == 0: cnt += 1 # Update the answer ans = max(cnt, ans) # Return answer return ans# Driver Codeif __name__ == '__main__': arr = [2, 3, 5, 4, 7, 6] K = 3 # Size of the input array N = len(arr) print(maxEvenIntegers(arr, N, K))# This code is contributed by MuskanKalra1 |
C#
// C# program to implement// the above approachusing System;class GFG{ // Function to find the maximum count of // even numbers from all the subarrays of // size K static int maxEvenIntegers(int []arr, int N, int M) { // Stores the maximum count of even numbers // from all the subarrays of size K int ans = 0; // Generate all subarrays of size K for (int i = 0; i <= N - M; i++) { // Store count of even numbers // in current subarray of size K int cnt = 0; // Traverse the current subarray for (int j = 0; j < M; j++) { // If current element // is an even number if (arr[i + j] % 2 == 0) cnt++; } // Update the answer ans = Math.Max(ans, cnt); } // Return answer return ans; } // Driver Code public static void Main(string[] args) { int []arr = { 2, 3, 5, 4, 7, 6 }; int K = 3; // Size of the input array int N = arr.Length; Console.WriteLine(maxEvenIntegers(arr, N, K)); }}// This code is contributed by AnkThon |
Javascript
<script>// Java script program to implement// the above approach// Function to find the maximum count of// even numbers from all the subarrays of// size Kfunction maxEvenIntegers(arr, N, M){ // Stores the maximum count of even numbers // from all the subarrays of size K let ans = 0; // Generate all subarrays of size K for (let i = 0; i <= N - M; i++) { // Store count of even numbers // in current subarray of size K let cnt = 0; // Traverse the current subarray for (let j = 0; j < M; j++) { // If current element // is an even number if (arr[i + j] % 2 == 0) cnt++; } // Update the answer ans = Math.max(ans, cnt); } // Return answer return ans;}// Driver Code let arr = [ 2, 3, 5, 4, 7, 6 ]; let K = 3; // Size of the input array let N = arr.length; document.write(maxEvenIntegers(arr, N, K) +"<br>"); //contributed by bobby</script> |
2
Time Complexity: O(N * K)
Auxiliary Space: O(1)
Efficient Approach: The above approach can be optimized using the Sliding window technique. Follow the steps below to solve the problems:
- Initialize a variable, say cntMaxEven, to store the maximum count of even numbers in a subarray of size K.
- Calculate the count of even numbers in the subarray { arr[0], … arr[K – 1] } and store it into cntMaxEven.
- Traverse the remaining subarrays of size K by iterating over the range [K, N – 1]. For every ith iteration remove the first element of the subarray and insert the current ith element of the array into the current subarray.
- Count the even numbers in the current subarray and update cntMaxEven to the maximum count of even numbers in the current subarray and cntMaxEven.
- Finally, print the value of cntMaxEven.
Below is the implementation of the above approach:
C++
// C++ program to implement// the above approach#include <bits/stdc++.h>using namespace std;// Function to find the maximum count of// even numbers from all the subarrays of// size Kint maxEvenIntegers(int arr[], int N, int M){ // Stores the count of even numbers // in a subarray of size K int curr = 0; // Calculate the count of even numbers // in the current subarray for (int i = 0; i < M; i++) { // If current element is // an even number if (arr[i] % 2 == 0) curr++; } // Stores the maximum count of even numbers // from all the subarrays of size K int ans = curr; // Traverse remaining subarrays of size K // using sliding window technique for (int i = M; i < N; i++) { // If the first element of // the subarray is even if (arr[i - M] % 2 == 0) { // Update curr curr--; } // If i-th element is even increment // the count if (arr[i] % 2 == 0) curr++; // Update the answer ans = max(ans, curr); } // Return answer return ans;}// Driver Codeint main(){ int arr[] = { 2, 3, 5, 4, 7, 6 }; int M = 3; // Size of the input array int N = sizeof(arr) / sizeof(arr[0]); // Function call cout << maxEvenIntegers(arr, N, M) << endl; return 0;} |
Java
// Java program to implement// the above approachimport java.util.*;class GFG{ // Function to find the maximum count of // even numbers from all the subarrays of // size K static int maxEvenIntegers(int arr[], int N, int M) { // Stores the count of even numbers // in a subarray of size K int curr = 0; // Calculate the count of even numbers // in the current subarray for (int i = 0; i < M; i++) { // If current element is // an even number if (arr[i] % 2 == 0) curr++; } // Stores the maximum count of even numbers // from all the subarrays of size K int ans = curr; // Traverse remaining subarrays of size K // using sliding window technique for (int i = M; i < N; i++) { // If the first element of // the subarray is even if (arr[i - M] % 2 == 0) { // Update curr curr--; } // If i-th element is even increment // the count if (arr[i] % 2 == 0) curr++; // Update the answer ans = Math.max(ans, curr); } // Return answer return ans; } // Driver Code public static void main(String[] args) { int arr[] = { 2, 3, 5, 4, 7, 6 }; int M = 3; // Size of the input array int N = arr.length; // Function call System.out.print(maxEvenIntegers(arr, N, M) +"\n"); }}// This code is contributed by 29AjayKumar |
Python3
# Python3 program to implement# the above approach# Function to find the maximum count of# even numbers from all the subarrays of# size Mdef maxEvenIntegers(arr, N, M): # Stores the count of even numbers # in a subarray of size M curr = 0 # Calculate the count of even numbers # in the current subarray for i in range(0, M): # If current element is # an even number if(arr[i] % 2 == 0): curr += 1 # Stores the maximum count of even numbers # from all the subarrays of size M ans = curr # Traverse remaining subarrays of size M # using sliding window technique for i in range(M, N): # If the first element of # the subarray is even if(arr[i - M] % 2 == 0): # update curr curr -= 1 # If i-th element is even increment # the count if(arr[i] % 2 == 0): curr += 1 # update the answer ans = max(curr, ans) # Return answer return ans# Driver Codeif __name__ == '__main__': arr = [2, 3, 5, 4, 7, 6] M = 3 # Size of the input array N = len(arr) # Function call print(maxEvenIntegers(arr, N, M))# This code is contributed by MuskanKalra1 |
C#
// C# program to implement// the above approachusing System;class GFG{ // Function to find the maximum count of // even numbers from all the subarrays of // size K static int maxEvenints(int []arr, int N, int M) { // Stores the count of even numbers // in a subarray of size K int curr = 0; // Calculate the count of even numbers // in the current subarray for (int i = 0; i < M; i++) { // If current element is // an even number if (arr[i] % 2 == 0) curr++; } // Stores the maximum count of even numbers // from all the subarrays of size K int ans = curr; // Traverse remaining subarrays of size K // using sliding window technique for (int i = M; i < N; i++) { // If the first element of // the subarray is even if (arr[i - M] % 2 == 0) { // Update curr curr--; } // If i-th element is even increment // the count if (arr[i] % 2 == 0) curr++; // Update the answer ans = Math.Max(ans, curr); } // Return answer return ans; } // Driver Code public static void Main(String[] args) { int []arr = { 2, 3, 5, 4, 7, 6 }; int M = 3; // Size of the input array int N = arr.Length; // Function call Console.Write(maxEvenints(arr, N, M) +"\n"); }}// This code is contributed by 29AjayKumar |
Javascript
<script>// Javascript program to implement// the above approach // Function to find the maximum count of // even numbers from all the subarrays of // size K function maxEvenLetegers(arr, N, M) { // Stores the count of even numbers // in a subarray of size K let curr = 0; // Calculate the count of even numbers // in the current subarray for (let i = 0; i < M; i++) { // If current element is // an even number if (arr[i] % 2 == 0) curr++; } // Stores the maximum count of even numbers // from all the subarrays of size K let ans = curr; // Traverse remaining subarrays of size K // using sliding window technique for (let i = M; i < N; i++) { // If the first element of // the subarray is even if (arr[i - M] % 2 == 0) { // Update curr curr--; } // If i-th element is even increment // the count if (arr[i] % 2 == 0) curr++; // Update the answer ans = Math.max(ans, curr); } // Return answer return ans; }// Driver Code let arr = [ 2, 3, 5, 4, 7, 6 ]; let M = 3; // Size of the input array let N = arr.length; // Function call document.write(maxEvenLetegers(arr, N, M) +"\n"); // This code is contributed by souravghosh0416.</script> |
2
Time Complexity: O(N)
Auxiliary Space: O(1)
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!

… [Trackback]
[…] Read More on to that Topic: geeksforgeeks.org/maximum-even-numbers-present-in-any-subarray-of-size-k/ […]