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


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]




Published on 05-Oct-2021 13:07:04