Number of Equivalent Domino Pairs

EasyArrayHash TableCounting

Solution

export function numEquivDominoPairs(dominoes: number[][]): number {
  const hash = ([a, b]: number[]) => {
    return [Math.min(a, b), Math.max(a, b)].join('');
  };
  const counts = new Map<string, number>();
  for (const domino of dominoes) {
    const key = hash(domino);
    const count = counts.get(key) ?? 0;
    counts.set(key, count + 1);
  }
  return [...counts.values()].reduce((prev, count) => prev + (count * (count - 1)) / 2, 0);
}