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


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]





Updated on: 05-Oct-2021


Kickstart Your Career

Get certified by completing the course

Get Started