Hackerrank - Beautiful Pairs Solution
2 min read

Hackerrank - Beautiful Pairs Solution

Hackerrank - Beautiful Pairs Solution

You are given two arrays,  and , both containing  integers.

A pair of indices  is beautiful if the  element of array  is equal to the  element of array . In other words, pair  is beautiful if and only if . A set containing beautiful pairs is called a beautiful set.

A beautiful set is called pairwise disjoint if for every pair  belonging to the set there is no repetition of either  or  values. For instance, if  and  the beautiful set  is not pairwise disjoint as there is a repetition of , that is .

Your task is to change exactly element in  so that the size of the pairwise disjoint beautiful set is maximum.

Function Description

Complete the beautifulPairs function in the editor below. It should return an integer that represents the maximum number of pairwise disjoint beautiful pairs that can be formed.

beautifulPairs has the following parameters:

  • A: an array of integers
  • B: an array of integers

Input Format

The first line contains a single integer , the number of elements in  and .
The second line contains  space-separated integers .
The third line contains  space-separated integers .

Constraints

Output Format

Determine and print the maximum possible number of pairwise disjoint beautiful pairs.

Note: You must first change  element in , and your choice of element must be optimal.

Sample Input 0

4
1 2 3 4
1 2 3 3

Sample Output 0

4

Explanation 0

You are given  and .
The beautiful set is  and maximum sized pairwise disjoint beautiful set is either  or .
We can do better. We change the  element of array  from  to . Now new B array is:  and the pairwise disjoint beautiful set is . So, the answer is 4.
Note that we could have also selected index 3 instead of index 2 but it would have yeilded the same result. Any other choice of index is not optimal.

Sample Input 1

6
3 5 7 11 5 8
5 7 11 10 5 8

Sample Output 1

6

Solution in Python

def beautifulPairs(A, B, n):
    X=[]
    for i in A[::-1]:
        if i in B:
            A.remove(i)
            B.remove(i)
            X.append(i)
    
    return n-1 if len(X)==n else len(X)+1
n = int(input())
A  = list(map(int,input().split()))
B  = list(map(int,input().split()))
print(beautifulPairs(A, B, n))

Enjoying these posts? Subscribe for more


Adblocker detected! Please consider reading this notice.

We've detected that you are using AdBlock Plus or some other adblocking software which is preventing the page from fully loading.

That's okay. But without advertising-income, we can't keep making this site awesome.

We don't have any banner, Flash, animation, obnoxious sound, or popup ad. We do not implement these annoying types of ads!

We need money to operate the site, and almost all of it comes from our online advertising.

Please add thepoorcoder.com to your ad blocking whitelist or disable your adblocking software.

×