LeetCode #1128. Number of Equivalent Domino Pairs

题目

1128. Number of Equivalent Domino Pairs


解题方法

遍历数组,先把每个domino排序,小在前大在后,然后判断这个元组是否是dic的一个键,如果不是就加入到dic中,如果是就把值+1。之后遍历dic的键,套用公式sum = n(n-1)/2计算每一个元组能凑出来的dominoes对,最后累加到返回值rat中即可。
时间复杂度:O(n)
空间复杂度:O(n)
n是domino pairs的个数。


代码

class Solution:
    def numEquivDominoPairs(self, dominoes: List[List[int]]) -> int:
        dic = {}
        for i in range(len(dominoes)):
            if dominoes[i][0] > dominoes[i][1]:
                dominoes[i][0], dominoes[i][1] = dominoes[i][1], dominoes[i][0]
            if (dominoes[i][0], dominoes[i][1]) not in dic:
                dic[(dominoes[i][0], dominoes[i][1])] = 1
            else:
                dic[(dominoes[i][0], dominoes[i][1])] += 1
        
        rat = 0
        for val in dic.values():
            rat += val * (val - 1) // 2
        return rat
posted @ 2020-11-24 13:30  老鼠司令  阅读(61)  评论(0)    收藏  举报