题目
难度:简单
类型:数组
题意:找到所有的相同数组对。我最开始理解错了,这种相同数对最多是k*(k-1)/2, 我开始理解成了阶乘个,所以一直错。以下并不是最优解法,只是一种思路,即先排序把相同的数对放在一起,然后统计相同数对的数量。最后把相同的数对用上面的公式求一下,就是最终结果。
class Solution {
public:
int numEquivDominoPairs(vector<vector<int>>& d) {
int n = d.size();
int res = 0;
for(auto &c: d){
sort(c.begin(), c.end());
}
sort(d.begin(), d.end(),[](vector<int> x, vector<int> y){
return x[0] < y[0] || x[0]==y[0] && x[1] < y[1];
});
for(int i = 0; i < n; ){
int j = i;
while(j < n && d[i]==d[j]) j++;
if(j - i > 1){
int k = j - i;
res += k*(k-1)/2;
}
i = j;
}
return res;
}
};