Blogs Hub

by Sumit Chourasia | Jun 13, 2020 | Category :coding | Tags : c-sharparrayडेटा-संरचनाleetcodeआसानalgorithm

Number of Equivalent Domino Pairs - Array - Easy - LeetCode - मिनी टीवी

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:

``````using System;
using System.Collections.Generic;
using System.Text;

{
{
public int NumEquivDominoPairs(int[][] dominoes)
{
var map = new Dictionary<string, int>();
int count = 0;
string key = string.Empty;
for (int i = 0; i < dominoes.Length; i++)
{
key = Math.Min(dominoes[i][0], dominoes[i][1]).ToString() +
"-" +Math.Max(dominoes[i][0], dominoes[i][1]).ToString();

if (map.ContainsKey(key))
{
count += map[key];
map[key]++;
}
else
{
}
}

return count;
}
}
}
``````

Time Complexity: O(n)

Space Complexity: O(n)

Unit Tests:

``````using LeetCode.AskGif.Easy.Array;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Text;

namespace CodingUnitTest.Easy.Array
{
[TestClass]
{
[TestMethod]
{
var dominoes = new int[,]{
{ 1, 2 },
{ 2, 1 },
{ 3, 4 },
{ 5, 6 }
};
var expected = 1;

var res = new NumEquivDominoPairsSoln().NumEquivDominoPairs(ArrayMapper(dominoes));
Assert.AreEqual(expected, res);
}

[TestMethod]
{
var dominoes = new int[,]{
{ 1, 1 },
{ 2, 2 },
{ 1, 1 },
{ 1, 2 },
{ 1, 2 },
{ 1, 1 }
};
var expected = 4;

var res = new NumEquivDominoPairsSoln().NumEquivDominoPairs(ArrayMapper(dominoes));
Assert.AreEqual(expected, res);
}

private int[][] ArrayMapper(int[,] matrix)
{
var arr = new int[matrix.GetLength(0)][];
for (int i = 0; i < matrix.GetLength(0); i++)
{
arr[i] = new int[matrix.GetLength(1)];
for (int j = 0; j < matrix.GetLength(1); j++)
{
arr[i][j] = matrix[i, j];
}
}

return arr;
}
}
}
``````

Contributed By: Sumit Chourasia
Contributed By: Sumit Chourasia
Contributed By: Sumit Chourasia
Contributed By: Sumit Chourasia