题解
看似容易实则需要明白一些原理才能做出。
1.把数组中的两个数从小到大排序,并且变成是为数字,【1,2】即为12(1*10 + 2)【2,1】先排序在变为数字,仍然是12.
2. 如果发现了:当你遇到(1, 2)时,如果 12之前(注意是之前)出现了 m 次,那么新加入的 12 就能再多贡献 m 个匹配对数。
代码
class Solution {
public:
int numEquivDominoPairs(vector<vector<int>>& dominoes) {
int res = 0;
int n = dominoes.size();
vector<int>num(100);//定义了一个100的数组
for(int i = 0; i < n; i++){
int val = dominoes[i][0] < dominoes[i][1] ? 10*dominoes[i][0] + dominoes[i][1] : dominoes[i][0] + 10*dominoes[i][1];
res +=num[val];
//cout<<res<<'\n';
num[val]++;
}
return res;
}
};