题解
看似容易实则需要明白一些原理才能做出。
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;
}
};
本文介绍了一种算法解决方案,用于计算一个骨牌数组中等值骨牌对的数量。通过将骨牌上的两个数值排序并转换为整数,利用哈希表记录每种骨牌出现次数的方式,有效地统计了等值骨牌对的数量。
167

被折叠的 条评论
为什么被折叠?



