題目
難度:簡單
類型:數組
題意:找到所有的相同數組對。我最開始理解錯了,這種相同數對最多是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;
}
};