查詢配對陣列程式,使用 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 次瀏覽

開啟您的 職業生涯

完成課程,獲得認證

開始學習
廣告
© . All rights reserved.