題解
看似容易實則需要明白一些原理才能做出。
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;
}
};