less than 1 minute read

<-E 1128> Number of Equivalent Domino Pairs

// Method 1
class Solution {
public:
    int numEquivDominoPairs(vector<vector<int>>& dominoes) {
        for (auto &p: dominoes) {
            if (p[0]<=p[1]) {continue;}
            swap(p[0], p[1]);
        }   
        map<vector<int>, int> A;
        for (auto &p: dominoes) {++A[p];}
        int res=0;
        for (auto &p: A) {
            res += p.second*(p.second -1)/2;
        }
        return res;
    }
};

// Method 2
class Solution {
public:
    int numEquivDominoPairs(vector<vector<int>>& dominoes) {
        
        int output = 0;
        unordered_map<int, int> table;
        
        for (int i=0; i<dominoes.size(); i++) {
            int key;
            if (dominoes[i][0] < dominoes[i][1]) {
                key = dominoes[i][0]*10 + dominoes[i][1];
            }
            else {
                key = dominoes[i][1]*10 + dominoes[i][0];
            }
            table[key]++;
        }
        
        for (auto& item : table) {
            if (item.second > 1) {
                output += item.second * (item.second-1) / 2;
            }
        }
        return output;
    }
};