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: 2
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:
- Run two nested loops to get all the possible pairs of numbers in the array.
- For each pair, check whether if a[i] is even and a[j] is odd.
- If it is, then increase the required count by one.
- When all the pairs have been checked, print the count in the end.
Below is the implementation of the above approach:
C++
// 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
// 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
# 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#
// 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 |
Javascript
<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> |
3
Time Complexity: O(n2)
Auxiliary Space: O(1)
Efficient Approach:
- For each element starting from index 0 we will check if it’s even or not.
- If it’s even we will increase the count by 1.
- Else we will increase our final answer by count.
Below is the implementation of the above approach:
C++
// 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
// 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
# 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#
// 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 |
Javascript
<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> |
3
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!