Python程式:查詢陣列中相同元素的對數 (i, j)


假設我們有一個數組 nums。我們需要找到滿足 nums[i] = nums[j] 但 i 不等於 j 的對數 (i,j)。

因此,如果輸入類似 nums = [1,3,1,3,5],則輸出將為 4,因為對數為 (0,2), (2,0), (1,3) 和 (3,1)。

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

  • d := 一個新的字典
  • 對於 nums 中的每個元素 c,執行以下操作:
    • 如果 c 在 d 中存在,則 d[c] := (d[c] + 1),否則 d[c] := 1
  • res := 0
  • 對於字典 d 中所有值大於 1 的元素 c,執行以下操作:
    • res := res +(d[c] *(d[c]-1))
  • 返回 res

示例

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

def solve(nums):
   d = {}
   for c in nums:
      d[c] = d[c] + 1 if c in d.keys() else 1

   res = 0
   for c in (x for x in d if d[x] > 1):
      res += (d[c] * (d[c]-1))

   return res

nums = [1,3,1,3,5]
print(solve(nums))

輸入

[1,3,1,3,5]

輸出

4

更新時間: 2021年10月25日

213 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告