Open In App

Find the count of even odd pairs in a given Array

Given an array arr[], the task is to find the count even-odd pairs in the array.
Examples: 

Input: arr[] = { 1, 2, 1, 3 } 
Output:
Explanation: 
The 2 pairs of the form (even, odd) are {2, 1} and {2, 3}.
 

Input: arr[] = { 5, 4, 1, 2, 3} 
Output: 3   

Naive Approach: 

  1. Run two nested loops to get all the possible pairs of numbers in the array.
  2. For each pair, check whether if a[i] is even and a[j] is odd.
  3. If it is, then increase the required count by one.
  4. When all the pairs have been checked, print the count in the end.

Below is the implementation of the above approach: 




// C++ program to count the pairs in array
// of the form (even, odd)
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to count the pairs in array
// of the form (even, odd)
int findCount(int arr[], int n)
{
    // variable to store count of such pairs
    int res = 0;
 
    // Iterate through all pairs
    for (int i = 0; i < n - 1; i++)
        for (int j = i + 1; j < n; j++)
 
            // Increment count
            // if condition is satisfied
            if ((arr[i] % 2 == 0)
                && (arr[j] % 2 == 1)) {
                res++;
            }
 
    return res;
}
 
// Driver code
int main()
{
    int a[] = { 5, 4, 1, 2, 3 };
    int n = sizeof(a) / sizeof(a[0]);
    cout << findCount(a, n);
    return 0;
}




// Java program to count the pairs in array
// of the form (even, odd)
import java.util.*;
 
class GFG{
 
// Function to count the pairs in array
// of the form (even, odd)
static int findCount(int arr[], int n)
{
    // Variable to store count of such pairs
    int res = 0;
 
    // Iterate through all pairs
    for (int i = 0; i < n - 1; i++)
        for (int j = i + 1; j < n; j++)
 
            // Increment count
            // if condition is satisfied
            if ((arr[i] % 2 == 0) &&
                (arr[j] % 2 == 1))
            {
                res++;
            }
    return res;
}
 
// Driver code
public static void main(String[] args)
{
    int a[] = { 5, 4, 1, 2, 3 };
    int n = a.length;
    System.out.print(findCount(a, n));
}
}
 
// This code is contributed by Rohit_ranjan




# Python3 program to count the pairs
# in array of the form (even, odd)
 
# Function to count the pairs in 
# array of the form (even, odd)
def findCount(arr, n):
 
    # Variable to store count
    # of such pairs
    res = 0
 
    # Iterate through all pairs
    for i in range(0, n - 1):
        for j in range(i + 1, n):
 
            # Increment count
            # if condition is satisfied
            if ((arr[i] % 2 == 0) and
                (arr[j] % 2 == 1)):
                res = res + 1
 
    return res
 
# Driver code
a = [ 5, 4, 1, 2, 3 ]
n = len(a)
 
print(findCount(a, n))
 
# This code is contributed by PratikBasu




// C# program to count the pairs in array
// of the form (even, odd)
using System;
 
class GFG{
 
// Function to count the pairs in array
// of the form (even, odd)
static int findCount(int []arr, int n)
{
 
    // Variable to store count of such pairs
    int res = 0;
 
    // Iterate through all pairs
    for(int i = 0; i < n - 1; i++)
       for(int j = i + 1; j < n; j++)
        
          // Increment count
          // if condition is satisfied
          if ((arr[i] % 2 == 0) &&
              (arr[j] % 2 == 1))
          {
              res++;
          }
           
    return res;
}
 
// Driver code
public static void Main(String[] args)
{
    int []a = { 5, 4, 1, 2, 3 };
    int n = a.Length;
     
    Console.Write(findCount(a, n));
}
}
 
// This code is contributed by Rohit_ranjan




<script>
 
// Javascript program to count the pairs in array
// of the form (even, odd)
 
// Function to count the pairs in array
// of the form (even, odd)
function findCount(arr, n)
{
    // variable to store count of such pairs
    let res = 0;
 
    // Iterate through all pairs
    for (let i = 0; i < n - 1; i++)
        for (let j = i + 1; j < n; j++)
 
            // Increment count
            // if condition is satisfied
            if ((arr[i] % 2 == 0)
                && (arr[j] % 2 == 1)) {
                res++;
            }
 
    return res;
}
 
// Driver code
let a = [ 5, 4, 1, 2, 3 ];
let n = a.length;
document.write(findCount(a, n));
 
</script>

Output: 
3

 

Time Complexity: O(n2)

Auxiliary Space: O(1)

Efficient Approach:  

  1. For each element starting from index 0 we will check if it’s even or not.
  2. If it’s even we will increase the count by 1.
  3. Else we will increase our final answer by count.

Below is the implementation of the above approach: 




// C++ program to count the pairs in array
// of the form (even, odd)
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to count the pairs in array
// of the form (even, odd)
int findCount(int arr[], int n)
{
    int count = 0, ans = 0;
    for (int i = 0; i < n; i++) {
 
        // check if number is even or not
        if (arr[i] % 2 == 0)
            count++;
        else
            ans = ans + count;
    }
    return ans;
}
 
// Driver code
int main()
{
    int a[] = { 5, 4, 1, 2, 3 };
    int n = sizeof(a) / sizeof(a[0]);
    cout << findCount(a, n);
    return 0;
}




// Java program to count the pairs
// in array of the form (even, odd)
class GFG{
 
// Function to count the pairs in 
// array of the form (even, odd)
static int findCount(int arr[], int n)
{
    int count = 0, ans = 0;
    for(int i = 0; i < n; i++)
    {
         
       // Check if number is even
       // or not
       if (arr[i] % 2 == 0)
       {
           count++;
       }
       else
       {
           ans = ans + count;
       }
    }
    return ans;
}
 
// Driver code
public static void main(String[] args)
{
    int a[] = { 5, 4, 1, 2, 3 };
    int n = a.length;
     
    System.out.print(findCount(a, n));
}
}
 
// This code is contributed by amal kumar choubey




# Python3 program to count the pairs
# in array of the form (even, odd)
 
# Function to count the pairs in
# array of the form (even, odd)
def findCount(arr, n):
 
    count = 0
    ans = 0
     
    for i in range(0, n):
 
        # Check if number is even or not
        if (arr[i] % 2 == 0):
            count = count + 1
        else:
            ans = ans + count
             
    return ans
 
# Driver code
a = [ 5, 4, 1, 2, 3 ]
n = len(a)
 
print(findCount(a, n))
 
# This code is contributed by PratikBasu




// C# program to count the pairs in
// array of the form (even, odd)
using System;
 
class GFG{
 
// Function to count the pairs in
// array of the form (even, odd)
static int findCount(int []arr, int n)
{
    int count = 0, ans = 0;
    for(int i = 0; i < n; i++)
    {
 
       // Check if number is even or not
       if (arr[i] % 2 == 0)
       {
           count++;  
       }
       else
       {
           ans = ans + count;
       }
    }
    return ans;
}
 
// Driver code
public static void Main()
{
    int []a = { 5, 4, 1, 2, 3 };
    int n = a.Length;
     
    Console.WriteLine(findCount(a, n));
}
}
 
// This code is contributed by Code_Mech




<script>
// Javascript program to count the pairs in array
// of the form (even, odd)
 
// Function to count the pairs in array
// of the form (even, odd)
function findCount(arr, n)
{
    let count = 0, ans = 0;
    for (let i = 0; i < n; i++) {
 
        // check if number is even or not
        if (arr[i] % 2 == 0)
            count++;
        else
            ans = ans + count;
    }
    return ans;
}
 
// Driver code
let a = [ 5, 4, 1, 2, 3 ];
let n = a.length;
document.write(findCount(a, n));
 
// This code is contributed by subhammahato348.
</script>

Output: 
3

 

Time Complexity: O(n)

Auxiliary Space: O(1)


Article Tags :