直观思路是二重循环,O(n^2)超时
注意数据范围,a,b均为个位数,实现Hashmap将(a,b)和(b,a)映射到一个即可,最简单的实现是这样if a<b, tmp = a*10+b, else tmp = b*10+a
注意答案是求(i,j)的数量,所以一次遍历的时候要这样计算
class Solution {
public:
int numEquivDominoPairs(vector<vector<int>>& dominoes) {
int res = 0;
unordered_map<int,int> hashmap;
for(auto dominoe:dominoes){
int tmp = (dominoe[0]<dominoe[1]?dominoe[0]*10+dominoe[1]:dominoe[1]*10 + dominoe[0]);
if(hashmap.count(tmp)) res+=hashmap[tmp];
hashmap[tmp]++;
}
return res;
}
};