Python程式:查詢乘積相同的四元組數量


假設我們有一個名為nums的數字列表,其中包含唯一的正數。我們必須從nums中找到像(a, b, c, d)這樣的四元組的數量,使得a*b = c*d,a、b、c和d都是nums中不同的元素。

因此,如果輸入類似於nums = [3, 6, 4, 8],則輸出將為8,因為四元組為[[3,8,6,4], [3,8,4,6], [8,3,6,4], [8,3,4,6], [6,4,3,8], [4,6,3,8], [6,4,8,3], [4,6,8,3]]。

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

  • c := 一個新的對映
  • n := nums的大小
  • 對於i從0到n-1,執行:
    • 對於j從i+1到n-1,執行:
      • x := nums[i] * nums[j]
      • c[x] := 1 + (如果存在c[x]則為c[x],否則為0)
  • ret := 0
  • 對於c中所有值的列表中的每個x,執行:
    • ret := ret + x *(x - 1)
  • 返回 ret * 4

示例

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

def solve(nums):
   c = {}
   n = len(nums)
   for i in range(n):
      for j in range(i + 1, n):
         x = nums[i] * nums[j]
         c[x] = c.get(x, 0) + 1
   ret = 0
   for x in c.values():
      ret += x * (x - 1)
   return ret * 4

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

輸入

[3, 6, 4, 8]

輸出

8

更新於:2021年10月18日

215 次檢視

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告