查找配对数组程序,使用 Python


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

所以,如果输入为 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

上次更新时间: 05-10-2021

112 次浏览

开启您的 职业生涯

完成课程,获得认证

开始学习
广告