1. 程式人生 > 實用技巧 >LeetCode #1128. Number of Equivalent Domino Pairs

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