Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

Find if it is possible to choose subarray that it contains exactly K even integers

  • Last Updated : 24 Nov, 2021

Given 2 positive integers N and K and an array arr[], the task is to find whether it is possible to choose a non-empty subarray of the array such that the subarray contains exactly K even integers. 
Examples: 
 

Input: N = 4, K = 2, arr[] = {1, 2, 4, 5} 
Output: Yes 
Explanation: 
We can select the subarray {2, 4} which contains exactly K = 2 even numbers.
Input: N = 3, K = 3, arr[] = {2, 4, 5} 
Output: No 
Explanation: 
There are only two even numbers. Therefore, we cannot choose a subarray with K = 3 even numbers. 
 

Attention reader! All those who say programming isn't for kids, just haven't met the right mentors yet. Join the  Demo Class for First Step to Coding Coursespecifically designed for students of class 8 to 12. 

The students will get to learn more about the world of programming in these free classes which will definitely help them in making a wise career choice in the future.

 



Approach: The idea is to count the number of even numbers in the array. Now there can be 3 cases: 
 

  • If the count of even numbers in the array is 0 (i.e.) there are only odd numbers in the array, then we can’t select any subarray
  • If the count of even numbers in the array is ≥ K, then we can easily select a subarray with exactly K even integers
  • Else it is not possible to select a subarray with exactly K even integers

Below is the implementation of the above approach:
 

CPP




// C++ program to check if it is possible to
// choose a subarray that contains exactly
// K even integers
#include <bits/stdc++.h>
using namespace std;
 
// Function to check if it is possible to
// choose a subarray that contains exactly
// K even integers
void isPossible(int A[], int n, int k)
{
    // Variable to store the count of
    // even numbers
    int countOfTwo = 0;
    for (int i = 0; i < n; i++) {
        if (A[i] % 2 == 0) {
            countOfTwo++;
        }
    }
 
    // If we have to select 0 even numbers
    // but there is all odd numbers in the array
    if (k == 0 && countOfTwo == n)
        cout << "NO\n";
 
    // If the count of even numbers is greater than
    // or equal to K then we can select a
    // subarray with exactly K even integers
    else if (countOfTwo >= k) {
        cout << "Yes\n";
    }
 
    // If the count of even numbers is less than K
    // then we cannot select any subarray with
    // exactly K even integers
    else
        cout << "No\n";
}
 
// Driver code
int main()
{
    int arr[] = { 1, 2, 4, 5 };
    int K = 2;
    int N = sizeof(arr) / sizeof(arr[0]);
 
    isPossible(arr, N, K);
    return 0;
}

Java




// Java program to check if it is possible to
// choose a subarray that contains exactly
// K even integers
import java.util.*;
  
class GFG{
// Function to check if it is possible to
// choose a subarray that contains exactly
// K even integers
static void isPossible(int []A, int n, int k)
{
    // Variable to store the count of
    // even numbers
    int countOfTwo = 0;
    for (int i = 0; i < n; i++) {
        if (A[i] % 2 == 0) {
            countOfTwo++;
        }
    }
 
    // If we have to select 0 even numbers
    // but there is all odd numbers in the array
    if (k == 0 && countOfTwo == n)
        System.out.print("NO");
 
    // If the count of even numbers is greater than
    // or equal to K then we can select a
    // subarray with exactly K even integers
    else if (countOfTwo >= k) {
        System.out.print("YES");
    }
 
    // If the count of even numbers is less than K
    // then we cannot select any subarray with
    // exactly K even integers
    else
        System.out.print("No");
}
 
// Driver Code
public static void main(String[] args)
{
    int []arr = { 1, 2, 4, 5 };
    int K = 2;
    int n = arr.length;
 
    isPossible(arr, n, K);
}
}
 
// This code is contributed by shivanisinghss2110

Python3




# Python3 program to check if it is possible to
# choose a subarray that contains exactly
# K even integers
 
# Function to check if it is possible to
# choose a subarray that contains exactly
# K even integers
def isPossible(A, n, k):
     
    # Variable to store the count of
    # even numbers
    countOfTwo = 0
    for i in range(n):
        if (A[i] % 2 == 0):
            countOfTwo += 1
 
    # If we have to select 0 even numbers
    # but there is all odd numbers in the array
    if (k == 0 and countOfTwo == n):
        print("NO\n")
 
    # If the count of even numbers is greater than
    # or equal to K then we can select a
    # subarray with exactly K even integers
    elif (countOfTwo >= k):
        print("Yes\n")
 
    # If the count of even numbers is less than K
    # then we cannot select any subarray with
    # exactly K even integers
    else:
        print("No\n")
 
# Driver code
if __name__ == '__main__':
    arr=[1, 2, 4, 5]
    K = 2
    N = len(arr)
 
    isPossible(arr, N, K)
 
# This code is contributed by mohit kumar 29

C#




// C# program to check if it is possible to
// choose a subarray that contains exactly
// K even integers
using System;
 
class GFG{
 
// Function to check if it is possible to
// choose a subarray that contains exactly
// K even integers
static void isPossible(int []A, int n, int k)
{
    // Variable to store the count of
    // even numbers
    int countOfTwo = 0;
    for (int i = 0; i < n; i++) {
        if (A[i] % 2 == 0) {
            countOfTwo++;
        }
    }
 
    // If we have to select 0 even numbers
    // but there is all odd numbers in the array
    if (k == 0 && countOfTwo == n)
        Console.Write("NO");
 
    // If the count of even numbers is greater than
    // or equal to K then we can select a
    // subarray with exactly K even integers
    else if (countOfTwo >= k) {
        Console.Write("Yes");
    }
 
    // If the count of even numbers is less than K
    // then we cannot select any subarray with
    // exactly K even integers
    else
        Console.Write("No");
}
 
// Driver Code
public static void Main()
{
    int []arr = { 1, 2, 4, 5 };
    int K = 2;
    int n = arr.Length;
 
    isPossible(arr, n, K);
}
}
 
// This code is contributed by AbhiThakur

Javascript




<script>
 
// JavaScript program to check if it is possible to
// choose a subarray that contains exactly
// K even integers
 
// Function to check if it is possible to
// choose a subarray that contains exactly
// K even integers
function isPossible(A, n, k)
{
    // Variable to store the count of
    // even numbers
    var countOfTwo = 0;
    for (var i = 0; i < n; i++) {
        if (A[i] % 2 == 0) {
            countOfTwo++;
        }
    }
 
    // If we have to select 0 even numbers
    // but there is all odd numbers in the array
    if (k == 0 && countOfTwo == n)
        document.write("NO");
 
    // If the count of even numbers is greater than
    // or equal to K then we can select a
    // subarray with exactly K even integers
    else if (countOfTwo >= k) {
        document.write("Yes");
    }
 
    // If the count of even numbers is less than K
    // then we cannot select any subarray with
    // exactly K even integers
    else
        document.write("NO");
}
 
// Driver code
var arr = [ 1, 2, 4, 5 ];
var K = 2;
var N = arr.length;
isPossible(arr, N, K);
 
</script>
Output: 
Yes

 

Time Complexity: O(N)

Auxiliary Space: O(1)
 




My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!