Bird
Raised Fist0
C Sharp (C#)programming~20 mins

HashSet for unique elements in C Sharp (C#) - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
HashSet Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of this HashSet code?

Consider the following C# code using HashSet<int>. What will be printed?

C Sharp (C#)
using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        HashSet<int> numbers = new HashSet<int>() {1, 2, 3, 2, 4, 1};
        Console.WriteLine(numbers.Count);
    }
}
A4
B5
C6
D3
Attempts:
2 left
💡 Hint

HashSet stores only unique elements. Duplicate values are ignored.

Predict Output
intermediate
2:00remaining
What does this code print after adding elements?

What will be the output of this C# program?

C Sharp (C#)
using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        HashSet<string> fruits = new HashSet<string>();
        fruits.Add("apple");
        fruits.Add("banana");
        fruits.Add("apple");
        fruits.Add("orange");
        Console.WriteLine(fruits.Count);
    }
}
A4
B3
C2
D1
Attempts:
2 left
💡 Hint

HashSet ignores duplicates when adding.

🔧 Debug
advanced
2:00remaining
Why does this HashSet code throw an exception?

Examine the code below. It throws a runtime exception. What is the cause?

C Sharp (C#)
using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        HashSet<int> set = new HashSet<int>() {1, 2, 3};
        foreach (var item in set) {
            if (item == 2) {
                set.Remove(item);
            }
        }
    }
}
AThe HashSet is empty, so Remove fails.
BHashSet does not support Remove method.
CThe foreach loop variable 'item' is read-only and cannot be used in Remove.
DModifying a collection while iterating causes an InvalidOperationException.
Attempts:
2 left
💡 Hint

Think about what happens if you change a collection while looping over it.

Predict Output
advanced
2:00remaining
What is the output of this HashSet intersection code?

What will this program print?

C Sharp (C#)
using System;
using System.Collections.Generic;

class Program {
    static void Main() {
        HashSet<int> setA = new HashSet<int>() {1, 2, 3, 4};
        HashSet<int> setB = new HashSet<int>() {3, 4, 5, 6};
        setA.IntersectWith(setB);
        Console.WriteLine(string.Join(",", setA));
    }
}
A5,6
B1,2
C3,4
D1,2,3,4,5,6
Attempts:
2 left
💡 Hint

IntersectWith keeps only elements present in both sets.

🧠 Conceptual
expert
2:00remaining
What is the time complexity of HashSet operations?

Which statement best describes the average time complexity of Add, Remove, and Contains operations in a C# HashSet<T>?

AAdd, Remove, and Contains operations run on average in O(1) time due to hashing.
BAdd and Remove are O(1), but Contains is O(n) because it searches linearly.
CAll operations run in O(n) time because HashSet uses a list internally.
DAll operations run in O(log n) time because HashSet uses a balanced tree.
Attempts:
2 left
💡 Hint

Think about how hashing helps find elements quickly.

Practice

(1/5)
1. What is the main purpose of using a HashSet<T> in C#?
easy
A. To allow duplicate elements for faster access
B. To store elements in sorted order
C. To store unique elements without duplicates
D. To store key-value pairs like a dictionary

Solution

  1. Step 1: Understand HashSet behavior

    A HashSet automatically ignores duplicate entries and stores only unique elements.
  2. Step 2: Compare with other collections

    Unlike lists or dictionaries, HashSet does not allow duplicates and does not maintain order.
  3. Final Answer:

    To store unique elements without duplicates -> Option C
  4. Quick Check:

    HashSet = Unique elements [OK]
Hint: HashSet always keeps unique items only [OK]
Common Mistakes:
  • Thinking HashSet keeps elements sorted
  • Assuming HashSet allows duplicates
  • Confusing HashSet with Dictionary
2. Which of the following is the correct way to declare and initialize a HashSet<int> with values 1, 2, and 3?
easy
A. var set = HashSet<int> = {1, 2, 3};
B. var set = new HashSet<int> {1, 2, 3};
C. var set = new HashSet<int>[1, 2, 3];
D. var set = new HashSet<int>(1, 2, 3);

Solution

  1. Step 1: Check HashSet initialization syntax

    HashSet can be initialized with collection initializer syntax using curly braces after the constructor.
  2. Step 2: Validate each option

    var set = new HashSet<int> {1, 2, 3}; uses correct syntax: new HashSet<int> {1, 2, 3}; Options A, B, and C have invalid syntax.
  3. Final Answer:

    var set = new HashSet<int> {1, 2, 3}; -> Option B
  4. Quick Check:

    Use curly braces after constructor for initialization [OK]
Hint: Use curly braces after new HashSet for values [OK]
Common Mistakes:
  • Using parentheses with multiple values directly
  • Trying to declare array instead of HashSet
  • Incorrect assignment syntax
3. What will be the output of the following C# code?
var set = new HashSet<string>();
set.Add("apple");
set.Add("banana");
set.Add("apple");
Console.WriteLine(set.Count);
medium
A. 0
B. 3
C. 1
D. 2

Solution

  1. Step 1: Add elements to HashSet

    "apple" is added first, then "banana", then "apple" again.
  2. Step 2: Understand duplicate handling

    The second "apple" is ignored because HashSet stores unique elements only.
  3. Final Answer:

    2 -> Option D
  4. Quick Check:

    Duplicates ignored, count = 2 [OK]
Hint: Count equals unique items added, duplicates ignored [OK]
Common Mistakes:
  • Counting duplicates as separate elements
  • Assuming HashSet allows duplicates
  • Confusing Count with number of Add calls
4. Identify the error in this code snippet using HashSet<int>:
HashSet<int> numbers = new HashSet<int>();
numbers.Add(1);
numbers.Add(2);
numbers.Add(1);
Console.WriteLine(numbers[0]);
medium
A. HashSet does not support indexing with []
B. Cannot add duplicate values to HashSet
C. HashSet must be initialized with values
D. Add method returns void, cannot be used like this

Solution

  1. Step 1: Review HashSet usage

    HashSet stores unique elements but does not support accessing elements by index.
  2. Step 2: Identify invalid operation

    Using numbers[0] causes a compile-time error because HashSet has no indexer.
  3. Final Answer:

    HashSet does not support indexing with [] -> Option A
  4. Quick Check:

    No index access on HashSet [OK]
Hint: HashSet has no indexer; use foreach or Contains [OK]
Common Mistakes:
  • Trying to access elements by index
  • Thinking Add returns a value
  • Assuming duplicates cause errors
5. You have a list of integers with duplicates: List<int> nums = new List<int> {1, 2, 2, 3, 4, 4, 4, 5};
Which code snippet correctly creates a HashSet<int> containing only the unique elements from nums?
hard
A. var unique = new HashSet<int>(nums);
B. var unique = new HashSet<int>(); unique.Add(nums);
C. var unique = new HashSet<int>(); foreach(var n in nums) unique = n;
D. var unique = new HashSet<int>(); unique.AddRange(nums);

Solution

  1. Step 1: Understand HashSet constructor

    HashSet has a constructor that accepts an IEnumerable<T> to initialize with unique elements.
  2. Step 2: Analyze each option

    var unique = new HashSet<int>(nums); correctly passes the list to the constructor. var unique = new HashSet<int>(); unique.Add(nums); tries to add the whole list as one item (invalid). var unique = new HashSet<int>(); foreach(var n in nums) unique = n; assigns int to HashSet variable (invalid). var unique = new HashSet<int>(); unique.AddRange(nums); uses AddRange which HashSet does not have.
  3. Final Answer:

    var unique = new HashSet<int>(nums); -> Option A
  4. Quick Check:

    Use constructor with collection for unique set [OK]
Hint: Pass list to HashSet constructor for unique items [OK]
Common Mistakes:
  • Using Add to add whole list at once
  • Trying to assign int to HashSet variable
  • Using AddRange which HashSet lacks