Tue. Mar 28th, 2023

LeetCode – Arrays – Number of Equivalent Domino Pairs

ByKnight Coderz

May 24, 2020

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`
``class Solution {    public int numEquivDominoPairs(int[][] dominoes) {        List<List<Integer>> dList = new ArrayList<List<Integer>>();        Map<List<Integer>,Integer> dmap = new HashMap<List<Integer>,Integer>();        int counter = 0;        for(int i=0;i<dominoes.length;i++){            List<Integer> d = new ArrayList<Integer>();            d.add(dominoes[i][0]);            d.add(dominoes[i][1]);            Collections.sort(d);            if(dList.contains(d)) {                dmap.put(d,dmap.getOrDefault(d,0)+1);            }            else dList.add(d);        }        //System.out.println(dList);        //System.out.println(dmap);        for(int i:dmap.values()){            counter = counter + (i*(i+1)/2);        }        return counter;    }}``