Sock Merchant Challenge Solved in C#

Marcos Rezende
Nov 7 · 1 min read
Photo by Christian Fickinger on Unsplash

John works at a clothing store. He has a large pile of socks that he must pair by color for sale. Given an array of integers representing the color of each sock, determine how many pairs of socks with matching colors there are.

For example, there are n = 7 socks with colors ar = [1, 2, 1, 2, 1, 3, 2]. There is one pair of color 1 and one of color 2. There are three odd socks left, one of each color. The number of pairs is 2.

Given the number of socks in the pile n and an array of colors of each sock, how many pairs do we have?

static int sockMerchant(int n, int[] ar)
{
int pairs = 0;
HashSet<int> set = new HashSet<int>();
foreach (int i in ar)
{
if (set.Contains(i)) continue;
int[] matchedItems = Array.FindAll(ar, x => i == x);
int occurrencies = matchedItems.Length;
if (occurrencies > 1)
pairs += ((occurrencies - (occurrencies % 2)) / 2);
set.Add(i);
}
}
return pairs;

This Sock Merchant challenge is part of HackerRank

Marcos Rezende

Written by

“​Das Leben ist kein Ponyhof”

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade