Fair Candy Swap in Python


Suppose A and B are two friends. They have candy bars of different sizes. Here A[i] is the size of the i-th bar of candy owned by A, and B[j] is the size of the j-th bar of candy owned by B.

Since they are friends, they want to exchange one candy bar each so that after the exchange, both A and B have the same total amount of candy. (The total amount of candy a person has is the sum of the sizes of candy bars they have.) We have to return an integer array suppose ans, where ans[0] is the size of the candy bar that A must exchange, and ans[1] is the size of the candy bar that B must exchange. If there are multiple answers, we will return only one of them.

For example, if A = [1, 2] and B = [2, 3], then output will be [1, 2]

To solve this, we will follow these steps −

  • Take the difference between the sum of A and sum of B, then divide it by 2, and take the integer part into diff
  • convert B into a set
  • for i in A
    • if i – diff in B, then return [i, i – diff]

Example

Let us see the following implementation to get better understanding −

class Solution(object):
   def fairCandySwap(self, A, B):
      """
      :type A: List[int]
      :type B: List[int]
      :rtype: List[int]
      """
      diff = (sum(A) - sum(B))//2
      B=set(B)
      for i in A:
         if i- diff in B:
            return [i,i-diff]

Input

[1,2]
[2,3]

Output

[1,2]
raja
Published on 16-Jan-2020 11:27:13
Advertisements