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
广告