python 中等價多米諾骨牌對的數量


假設我們有一個多米諾骨牌列表。每個多米諾骨牌有兩個數字。兩個多米諾骨牌 D[i] = [a, b] 和 D[j] = [c, d] 相等,當 a = c 且 b = d,或 a = d 且 b = c 時。因此,可以翻轉一個多米諾骨牌。我們必須返回多米諾骨牌長度的 (i, j) 對的數量,其中 0 <= i < j <,並確定 D[i] 等於 D[j]。因此,如果多米諾骨牌列表為 [[1, 2], [2, 1], [3, 4], [6, 5]]。輸出將是 1

為此,我們將按照以下步驟進行 −

  • 令 answer = 0
  • 對於多米諾骨牌列表中的每個對 p −
    • 對 p 進行排序
    • 然後將每個多米諾骨牌的頻率儲存到 D 中
  • 對於 D 中的值 b −
    • 令 answer := answer + (b * (b - 1))/2
  • 返回 answer

示例

讓我們看看以下實現以更好地理解 −

 線上演示

class Solution(object):
   def numEquivDominoPairs(self, dominoes):
      d = {}
      ans = 0
      for i in dominoes:
         i.sort()
         i = tuple(i)
         if i not in d:
            d[i]= 1
         else:
            d[i]+=1
      for b in d.values():
         ans += ((b*(b-1))//2)
      return ans
ob1 = Solution()
print(ob1.numEquivDominoPairs([[1,2],[2,1],[3,4],[5,6], [4,3]]))

輸入

[[1,2],[2,1],[3,4],[5,6],[4,3]]

輸出

2

更新日期: 2020-04-29

237 次瀏覽

開啟 職業 生涯

完成課程並獲得認證

開始
廣告