Number of Equivalent Domino Pairs

LeetCode Q 1128 - Number of Equivalent Domino Pairs

Given a list of dominoes, dominoes[i] = [a, b] is equivalent to dominoes[j] = [c, d] if and only if either (a==c and b==d), or (a==d and b==c) - that is, one domino can be rotated to be equal to another domino.
Return the number of pairs (i, j) for which 0 <= i < j < dominoes.length, and dominoes[i] is equivalent to dominoes[j].

Example 1: Input: dominoes = [[1,2],[2,1],[3,4],[5,6]] ; Output: 1

Constraints:

  • 1 <= dominoes.length <= 40000
  • 1 <= dominoes[i][j] <= 9

Solution:

  • Traverse the dominoes array, count the number of same pairs.
  • Use Combination to get the result.

Code:

public int numEquivDominoPairs(int[][] dominoes) {
  Map<Integer, Integer> map = new HashMap<>();
  
  for (int d: dominoes) {
    int a = d[0], b = d[1];
    int key = Math.max(a, b) * 10 + Math.min(a, b);
    map.put(key, map.getOrDefault(key, 0) + 1);
  }
  
  int res = 0;
  for (int key: map.keySet()) {
    int v = map.get(key);
    res += v * (v - 1) / 2;
  }
  
  return res;
}

   Reprint policy


《Number of Equivalent Domino Pairs》 by Tong Shi is licensed under a Creative Commons Attribution 4.0 International License
  TOC