LeetCode - Arrays - 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`

```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;     } }```