12、LeetCode 2021/1/26 1128. 等价多米诺骨牌对的数量
1128. 等价多米诺骨牌对的数量
难度简单64
给你一个由一些多米诺骨牌组成的列表
dominoes
。如果其中某一张多米诺骨牌可以通过旋转
0
度或180
度得到另一张多米诺骨牌,我们就认为这两张牌是等价的。形式上,
dominoes[i] = [a, b]
和dominoes[j] = [c, d]
等价的前提是a==c
且b==d
,或是a==d
且b==c
。在
0 <= i < j < dominoes.length
的前提下,找出满足dominoes[i]
和dominoes[j]
等价的骨牌对(i, j)
的数量。示例:
输入:dominoes = [[1,2],[2,1],[3,4],[5,6]] 输出:1
方法一:
class Solution {
public int numEquivDominoPairs(int[][] dominoes) {
int s =0;
int[] cp = new int[100];
for(int[] arr : dominoes){
Arrays.sort(arr);
s = s + cp[arr[0]*10 + arr[1]]++;
}
return s;
}
}
方法二:
class Solution {
public int numEquivDominoPairs(int[][] dominoes) {
int[] num = new int[100];
int ret = 0;
for(int[] d : dominoes){
int val = d[0] < d[1] ? d[0]*10 + d[1] : d[1]*10+d[0];
ret += num[val];
num[val]++;
}
return ret;
}
}