题目
题意及思路
题意:这题是说(语言略显苍白),判断一堆“牌”中,含有相同牌的对数。
思路:@方法一,我的代码用的是该方法,是将 [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; } }