09 Sept 2026Go / Python / TypeScriptEasy

Number of Equivalent Domino Pairs

Count domino pairs equal either directly or after rotating one domino.

Normalize each domino by ordering its two values, count previous occurrences of that key, and add that count to the answer.

complexity

O(n) time and O(1) space under the bounded domino values.

solution files

  • Go number-of-equivalent-domino-pairs/solution.go
  • Python number-of-equivalent-domino-pairs/solution.py
  • TypeScript number-of-equivalent-domino-pairs/solution.ts

Solution files

Gonumber-of-equivalent-domino-pairs/solution.go
package main

func numEquivDominoPairs(dominoes [][]int) int {
	count := map[int]int{}
	pairs := 0
	for _, domino := range dominoes {
		first, second := domino[0], domino[1]
		if first > second {
			first, second = second, first
		}
		key := first*10 + second
		pairs += count[key]
		count[key]++
	}
	return pairs
}
Pythonnumber-of-equivalent-domino-pairs/solution.py
class Solution:
    def numEquivDominoPairs(self, dominoes: list[list[int]]) -> int:
        count: dict[tuple[int, int], int] = {}; pairs = class="syntax-number">0
        for first, second in dominoes:
            key = (min(first, second), max(first, second)); pairs += count.get(key, class="syntax-number">0); count[key] = count.get(key, class="syntax-number">0) + class="syntax-number">1
        return pairs
TypeScriptnumber-of-equivalent-domino-pairs/solution.ts
function numEquivDominoPairs(dominoes: number[][]): number {
  const count = new Map<number, number>(); let pairs = class="syntax-number">0;
  for (const [a, b] of dominoes) { const key = Math.min(a, b) * class="syntax-number">10 + Math.max(a, b); pairs += count.get(key) ?? class="syntax-number">0; count.set(key, (count.get(key) ?? class="syntax-number">0) + class="syntax-number">1); }
  return pairs;
}