题目
题意及思路
题意:这题是说(语言略显苍白),判断一堆“牌”中,含有相同牌的对数。
思路:@方法一,我的代码用的是该方法,是将 [x,y] 中较小的数乘以10, 加上较大数,得到一个唯一的值(encoding)存入到flag数组中。(相同的值即为相同“牌”,存在一个数组域中),然后就可以统计flag数组,这就是组合问题,n个里面任意两个可以组成一对。 @方法二,运用HashMap。 @方法三,统计个数。
代码
class Solution {
public int numEquivDominoPairs(int[][] dominoes) {
int t,ans = 0;
int rlen = dominoes.length;
int flag[] = new int[100];
// encoding
for(int i=0;i<rlen;i++){
if(dominoes[i][0]<dominoes[i][1]){
t = dominoes[i][0]*10+dominoes[i][1];
}else{
t = dominoes[i][1]*10+dominoes[i][0];
}
flag[t]++;
}
// count
for(int i=0;i<flag.length;i++){
if(flag[i]>1){
ans += (flag[i]*(flag[i]-1))/2;
}
}
return ans;
}
} 
京公网安备 11010502036488号