Given two arrays count all pairs whose sum is an odd number
Last Updated :
07 Jul, 2022
Given two arrays of N and M integers. The task is to find the number of unordered pairs formed of elements from both arrays in such a way that their sum is an odd number.
Note: An element can only be one pair.
Examples:
Input: a[] = {9, 14, 6, 2, 11}, b[] = {8, 4, 7, 20}
Output: 3
{9, 20}, {14, 7} and {11, 8}
Input: a[] = {2, 4, 6}, b[] = {8, 10, 12}
Output: 0
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, even2) + min(odd2, even1), because odd + even is only odd.
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)
odd1++;
else
even1++;
}
for ( int i = 0; i < m; i++) {
if (b[i] % 2)
odd2++;
else
even2++;
}
int pairs = min(odd1, even2) + min(odd2, even1);
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
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, even2) + Math.min(odd2, even1);
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 ):
odd1 + = 1
else :
even1 + = 1
for i in range (m):
if (b[i] % 2 ):
odd2 + = 1
else :
even2 + = 1
pairs = ( min (odd1, even2) +
min (odd2, even1))
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, even2) + Math.Min(odd2, even1);
return pairs;
}
static public 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)
$odd1 ++;
else
$even1 ++;
}
for ( $i = 0; $i < $m ; $i ++)
{
if ( $b [ $i ] % 2)
$odd2 ++;
else
$even2 ++;
}
$pairs = min( $odd1 , $even2 ) + min( $odd2 , $even1 );
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)
{
let odd1 = 0, even1 = 0;
let odd2 = 0, even2 = 0;
for (let i = 0; i < n; i++) {
if (a[i] % 2)
odd1++;
else
even1++;
}
for (let i = 0; i < m; i++) {
if (b[i] % 2)
odd2++;
else
even2++;
}
let pairs = Math.min(odd1, even2) + Math.min(odd2, even1);
return pairs;
}
let a = [ 9, 14, 6, 2, 11 ];
let b = [ 8, 4, 7, 20 ];
let n = a.length;
let m = b.length;
document.write(count_pairs(a, b, n, m));
</script>
|
Time Complexity: O(n + m)
Auxiliary Space: O(1)
Share your thoughts in the comments
Please Login to comment...