Program to find array of doubled pairs using Python


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

Updated on: 05-Oct-2021

86 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements