Count Pairs from two arrays with even sum
Given two arrays A[] and B[] of N and M integers respectively. The task is to count the number of unordered pairs formed by choosing an element from array A[] and other from array B[] in such a way that their sum is an even number.
Note that an element will only be a part of a single pair.
Examples:
Input: A[] = {9, 14, 6, 2, 11}, B[] = {8, 4, 7, 20}
Output: 4
{9, 7}, {14, 8}, {6, 4} and {2, 20} are the valid pairs.
Input: A[] = {2, 4, 6}, B[] = {8, 10, 12}
Output: 3
Approach: Count the number of odd and even numbers in both the arrays and the answer to the number of pairs will be min(odd1, odd2) + min(even1, even2) because (odd + odd) = even and (even + even) = even.
Below is the implementation of the above approach:
C++
#include <bits/stdc++.h>
using namespace std;
int count_pairs( int a[], int b[], int n, int m)
{
int odd1 = 0, even1 = 0;
int odd2 = 0, even2 = 0;
for ( int i = 0; i < n; i++) {
if (a[i] % 2 == 1)
odd1++;
else
even1++;
}
for ( int i = 0; i < m; i++) {
if (b[i] % 2 == 1)
odd2++;
else
even2++;
}
int pairs = min(odd1, odd2) + min(even1, even2);
return pairs;
}
int main()
{
int a[] = { 9, 14, 6, 2, 11 };
int b[] = { 8, 4, 7, 20 };
int n = sizeof (a) / sizeof (a[0]);
int m = sizeof (b) / sizeof (b[0]);
cout << count_pairs(a, b, n, m);
return 0;
}
|
Java
import java.io.*;
class GFG
{
static int count_pairs( int a[], int b[], int n, int m)
{
int odd1 = 0 , even1 = 0 ;
int odd2 = 0 , even2 = 0 ;
for ( int i = 0 ; i < n; i++)
{
if (a[i] % 2 == 1 )
odd1++;
else
even1++;
}
for ( int i = 0 ; i < m; i++)
{
if (b[i] % 2 == 1 )
odd2++;
else
even2++;
}
int pairs = Math.min(odd1, odd2) + Math.min(even1, even2);
return pairs;
}
public static void main (String[] args)
{
int a[] = { 9 , 14 , 6 , 2 , 11 };
int b[] = { 8 , 4 , 7 , 20 };
int n = a.length;
int m = b.length;
System.out.println (count_pairs(a, b, n, m));
}
}
|
Python3
def count_pairs(a,b,n,m):
odd1 = 0
even1 = 0
odd2 = 0
even2 = 0
for i in range (n):
if (a[i] % 2 = = 1 ):
odd1 + = 1
else :
even1 + = 1
for i in range (m):
if (b[i] % 2 = = 1 ):
odd2 + = 1
else :
even2 + = 1
pairs = min (odd1, odd2) + min (even1, even2)
return pairs
if __name__ = = '__main__' :
a = [ 9 , 14 , 6 , 2 , 11 ]
b = [ 8 , 4 , 7 , 20 ]
n = len (a)
m = len (b)
print (count_pairs(a, b, n, m))
|
C#
using System;
class GFG
{
static int count_pairs( int []a, int []b, int n, int m)
{
int odd1 = 0, even1 = 0;
int odd2 = 0, even2 = 0;
for ( int i = 0; i < n; i++)
{
if (a[i] % 2 == 1)
odd1++;
else
even1++;
}
for ( int i = 0; i < m; i++)
{
if (b[i] % 2 == 1)
odd2++;
else
even2++;
}
int pairs = Math.Min(odd1, odd2) + Math.Min(even1, even2);
return pairs;
}
public static void Main ()
{
int []a = { 9, 14, 6, 2, 11 };
int []b = { 8, 4, 7, 20 };
int n = a.Length;
int m = b.Length;
Console.WriteLine (count_pairs(a, b, n, m));
}
}
|
PHP
<?php
function count_pairs( $a , $b , $n , $m )
{
$odd1 = 0; $even1 = 0;
$odd2 = 0; $even2 = 0;
for ( $i = 0; $i < $n ; $i ++)
{
if ( $a [ $i ] % 2 == 1)
$odd1 ++;
else
$even1 ++;
}
for ( $i = 0; $i < $m ; $i ++)
{
if ( $b [ $i ] % 2 == 1)
$odd2 ++;
else
$even2 ++;
}
$pairs = min( $odd1 , $odd2 ) + min( $even1 , $even2 );
return $pairs ;
}
$a = array ( 9, 14, 6, 2, 11 );
$b = array ( 8, 4, 7, 20 );
$n = count ( $a );
$m = count ( $b );
echo count_pairs( $a , $b , $n , $m );
?>
|
Javascript
<script>
function count_pairs(a , b , n , m)
{
var odd1 = 0, even1 = 0;
var odd2 = 0, even2 = 0;
for (i = 0; i < n; i++) {
if (a[i] % 2 == 1)
odd1++;
else
even1++;
}
for (i = 0; i < m; i++) {
if (b[i] % 2 == 1)
odd2++;
else
even2++;
}
var pairs = Math.min(odd1, odd2) +
Math.min(even1, even2);
return pairs;
}
var a = [ 9, 14, 6, 2, 11 ];
var b = [ 8, 4, 7, 20 ];
var n = a.length;
var m = b.length;
document.write(count_pairs(a, b, n, m));
</script>
|
Time Complexity: O(n + m)
Auxiliary Space: O(1)
Last Updated :
31 May, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...