算法练习——等价多米诺骨牌对的数量

2021年1月26日LeetCode每日一题1128. 等价多米诺骨牌对的数量,这一题限定了每个牌的值在1到9,因此我们可以通过一个数组来存对应等价牌的数量,最终求的是等价牌对的数量,即需要求出多少对组合,将等价牌以较大数值那位作为十位,较小数值那位作为个位,这个两位数作为下标存储数量,这样等价牌就当作同一个牌统计了,count在每次统计前加上上一次的数量即为组合数量,组合公式 n * (n - 1) / 2,实际上就是 (1 + 2 + 3 + 4 + ... + n)的值。

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public int numEquivDominoPairs(int[][] dominoes) {
int[] arr = new int[100];
int count = 0;
for (int[] domino : dominoes) {
int a = domino[0], b = domino[1];
int num = a > b ? a * 10 + b : b * 10 + a;
count += arr[num];
arr[num]++;
}
return count;
}
}