Program to find array of doubled pairs using Python

PythonServer Side ProgrammingProgramming

Suppose we have an array of called nums whose length is even, we have to check whether it is possible to reorder it in such a way that nums[2*i + 1] = 2*nums[2*i] for every 0 <= i < size of nums/2.

So, if the input is like nums = [4,-2,2,-4], then the output will be True.

To solve this, we will follow these steps −

  • cnt := a map containing all elements in nums and their frequency values

  • for each x in the sorted list cnt which is sorted based on their absolute values, do

    • if cnt[x] > cnt[2 * x], then

      • return False

    • cnt[2 * x] := cnt[2 * x] - cnt[x]

  • return True

Example

Let us see the following implementation to get better understanding −

from collections import Counter
def solve(nums):
   cnt = Counter(nums)
   for x in sorted(cnt, key=abs):
      if cnt[x] > cnt[2 * x]:
         return False
      cnt[2 * x] -= cnt[x]
   return True

nums = [4,-2,2,-4]
print(solve(nums))

Input

[6,0,8,2,1,5]

Output

True
raja
Published on 05-Oct-2021 13:07:04
Advertisements