使用Python查找双倍对数组的程序

使用Python查找双倍对数组的程序

假设我们有一个名为nums的数组,其长度为偶数,我们必须检查是否有可能将其重新排序,使得对于每个0 <= i < nums/2大小的元素,nums[2 * i + 1] = 2 * nums[2 * i]。

所以,如果输入是nums=[4,-2,2,-4],那么输出将是True。

为了解决这个问题,我们将遵循以下步骤:

  • cnt:= 包含nums中所有元素和它们的频率值的映射

  • 对于cnt中基于其绝对值排序的列表中的每个x,执行以下操作

    • 如果cnt[x] > cnt[2 * x],则
      • 返回False
    • cnt[2 * x]:= cnt[2 * x] – cnt[x]

  • 返回True

示例

让我们看下面的实现,以便更好地理解−

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))

输入

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

输出

True

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程