Python查詢乘積相同的元組程式


假設我們有一個包含唯一正值的陣列nums,我們需要找到滿足a*b = c*d的元組(a, b, c, d)的數量,其中a、b、c和d是nums的元素,並且所有元素a、b、c和d都不同。

因此,如果輸入類似於nums = [2,3,4,6],則輸出將為8,因為我們可以得到像(2,6,3,4)、(2,6,4,3)、(6,2,3,4)、(6,2,4,3)、(3,4,2,6)、(4,3,2,6)、(3,4,6,2)、(4,3,6,2)這樣的元組。

為了解決這個問題,我們將遵循以下步驟:

  • dic := 一個空的對映,如果某個鍵不存在,則預設值為0
  • ans:= 0
  • 對於範圍從0到nums大小減2的i,執行:
    • 對於範圍從i+1到nums大小的j,執行:
      • dic[nums[i]*nums[j]] := dic[nums[i]*nums[j]] + 1
  • 對於dic所有值的列表中的每個v,執行:
    • 如果v等於1,則
      • 轉到下一次迭代
    • v:= v-1
    • s:= (v/2) * (8+8*v)
    • ans := ans + s
  • 返回ans作為整數

示例

讓我們看看下面的實現,以便更好地理解:

from collections import defaultdict
def solve(nums):
   dic = defaultdict(int)
   ans=0
   for i in range(len(nums)-1):
      for j in range(i+1,len(nums)):
         dic[nums[i]*nums[j]]+=1
   for v in dic.values():
      if v==1:
         continue
      v=v-1
      s=(v/2) * (8+8*v)
      ans+=s
   return int(ans)

nums = [3,4,6,2]
print(solve(nums))

輸入

[3,4,6,2]

輸出

0

更新於:2021年10月6日

瀏覽量:350

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告