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
- 對於範圍從i+1到nums大小的j,執行:
- 對於dic所有值的列表中的每個v,執行:
- 如果v等於1,則
- 轉到下一次迭代
- v:= v-1
- s:= (v/2) * (8+8*v)
- ans := ans + s
- 如果v等於1,則
- 返回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
廣告