📖 Scenario: Imagine you have a list of numbers where every number appears twice except for two unique numbers that appear only once. You want to find those two unique numbers efficiently.
🎯 Goal: Build a program that finds the two numbers that appear only once in an array where all other numbers appear twice, using the XOR operation.
📋 What You'll Learn
Create an integer array called arr with the exact values: 2, 4, 7, 9, 2, 4
Create an integer variable called xor_all and initialize it to 0
Use a for loop with variable i to XOR all elements of arr into xor_all
Print the two unique numbers separated by a space
💡 Why This Matters
🌍 Real World
Finding unique items in data streams or logs where duplicates are common.
💼 Career
Bitwise operations and efficient algorithms are important in embedded systems, security, and performance-critical applications.
Progress0 / 4 steps
1
Create the array with given values
Create an integer array called arr with the exact values: 2, 4, 7, 9, 2, 4.
DSA C
Hint
Use int arr[] = {2, 4, 7, 9, 2, 4}; to create the array and int n = 6; for its size.
2
Initialize XOR variable
Create an integer variable called xor_all and initialize it to 0.
DSA C
Hint
Use int xor_all = 0; to start XOR accumulation.
3
XOR all elements in the array
Use a for loop with variable i from 0 to n - 1 to XOR each element of arr into xor_all.
DSA C
Hint
Use for (int i = 0; i < n; i++) { xor_all ^= arr[i]; } to XOR all elements.
4
Find and print the two unique numbers
Complete the program to find the two unique numbers using XOR logic and print them separated by a space.
DSA C
Hint
Use the rightmost set bit of xor_all to divide elements into two groups. XOR each group separately to find the unique numbers. Then print them.
Practice
(1/5)
1. What is the main purpose of using XOR operation to find two non-repeating elements in an array where every other element repeats twice?
easy
A. To cancel out all repeating elements and isolate the XOR of the two unique elements
B. To sort the array in ascending order
C. To count the frequency of each element
D. To reverse the array elements
Solution
Step 1: Understand XOR property for duplicates
XOR of two identical numbers is 0, so XORing all elements cancels out duplicates.
Step 2: Result after XORing all elements
The result is XOR of the two unique elements because duplicates cancel out.
Final Answer:
To cancel out all repeating elements and isolate the XOR of the two unique elements -> Option A
Quick Check:
XOR cancels duplicates = isolate unique elements [OK]
Hint: XOR duplicates become zero, leaving unique elements XOR [OK]
Common Mistakes:
Thinking XOR sorts the array
Using XOR to count frequencies
Assuming XOR reverses elements
2. Which of the following C code snippets correctly initializes the XOR variable to start finding two non-repeating elements?
easy
A. int xor = 1;
B. int xor = 0;
C. int xor = -1;
D. int xor = NULL;
Solution
Step 1: Understand XOR identity element
XOR with 0 leaves the number unchanged, so start with 0.
Step 2: Initialize XOR variable
Setting xor = 0 allows XORing all elements correctly.
Final Answer:
int xor = 0; -> Option B
Quick Check:
Start XOR with 0 for correct accumulation [OK]
Hint: Initialize XOR with 0 because 0 XOR x = x [OK]
Common Mistakes:
Initializing XOR with 1 or -1
Using NULL for integer variable
Not initializing XOR variable
3. What will be the output of the following C code snippet?
int arr[] = {2, 3, 7, 9, 2, 3};
int xor = 0;
for(int i = 0; i < 6; i++) {
xor ^= arr[i];
}
printf("%d", xor);
medium
A. 14
B. 9
C. 7
D. 0
Solution
Step 1: XOR all elements in the array
Calculate 2^3=1, 1^7=6, 6^9=15, 15^2=13, 13^3=14.
Step 2: Result after XORing all elements
The final XOR value is 14, which is XOR of the two unique elements 7 and 9.
Final Answer:
14 -> Option A
Quick Check:
XOR all elements = 14 [OK]
Hint: XOR all elements to get XOR of unique pair [OK]
Common Mistakes:
Stopping XOR early
Miscomputing XOR values
Assuming output is one unique element
4. Identify the error in the following code snippet that attempts to find two non-repeating elements using XOR:
int arr[] = {4, 1, 2, 1, 2, 5};
int xor = 0;
for(int i = 0; i < 6; i++) {
xor ^= arr[i];
}
int set_bit = xor & ~(xor - 1);
int x = 0, y = 0;
for(int i = 0; i < 6; i++) {
if(arr[i] & set_bit)
x ^= arr[i];
else
y ^= arr[i];
}
printf("%d %d", x, y);
medium
A. Incorrect calculation of set_bit using xor & ~(xor - 1)
Loops run from 0 to 5 (6 elements), x and y initialized to 0 correctly.
Final Answer:
No error, code works correctly -> Option D
Quick Check:
Code logic and syntax are correct [OK]
Hint: Check bitwise operations and loop ranges carefully [OK]
Common Mistakes:
Miscomputing set_bit
Wrong loop boundaries
Uninitialized variables
5. Given an array where exactly two elements appear once and all others appear twice, how can you find those two unique elements efficiently using XOR? Choose the correct sequence of steps.
hard
A. Sort the array, then scan to find unique elements
B. Use a hash map to count frequencies, then pick elements with count 1
C. XOR all elements, find rightmost set bit in XOR result, divide elements into two groups by that bit, XOR each group separately
D. XOR all elements twice to get unique elements
Solution
Step 1: XOR all elements to get XOR of two unique elements
This cancels out duplicates and leaves XOR of unique pair.
Step 2: Find rightmost set bit in XOR result
This bit differs between the two unique elements.
Step 3: Divide elements into two groups based on this bit and XOR each group
This separates the two unique elements and finds them individually.
Final Answer:
XOR all elements, find rightmost set bit in XOR result, divide elements into two groups by that bit, XOR each group separately -> Option C
Quick Check:
Use XOR and bit partitioning to find unique elements [OK]
Hint: Use XOR and bit mask to split and find unique elements [OK]
Common Mistakes:
Sorting instead of XOR
Using hash map (extra space)
XORing twice without grouping
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.