Bird
Raised Fist0
DSA Cprogramming~20 mins

Two Non Repeating Elements in Array Using XOR in DSA C - Practice Problems & Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
XOR Mastery Badge
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of XOR-based two unique elements finder
What is the output of the following C code that finds two non-repeating elements in an array using XOR?
DSA C
#include <stdio.h>

void findTwoUnique(int arr[], int n) {
    int xor = 0;
    for (int i = 0; i < n; i++) {
        xor ^= arr[i];
    }
    int set_bit = xor & ~(xor - 1);
    int x = 0, y = 0;
    for (int i = 0; i < n; i++) {
        if (arr[i] & set_bit)
            x ^= arr[i];
        else
            y ^= arr[i];
    }
    printf("%d %d\n", x, y);
}

int main() {
    int arr[] = {2, 3, 7, 9, 2, 3};
    int n = sizeof(arr) / sizeof(arr[0]);
    findTwoUnique(arr, n);
    return 0;
}
A7 9
B9 7
C2 3
D0 0
Attempts:
2 left
💡 Hint
Focus on how XOR and set bits separate the two unique numbers.
🧠 Conceptual
intermediate
1:30remaining
Why XOR helps find two unique elements?
Why does XOR operation help in finding two non-repeating elements in an array where every other element repeats twice?
AXOR adds all numbers to find the sum of unique elements
BXOR multiplies all numbers to find product of unique elements
CXOR sorts the array to separate unique elements
DXOR of two identical numbers is zero, so duplicates cancel out leaving XOR of unique elements
Attempts:
2 left
💡 Hint
Think about what happens when you XOR a number with itself.
❓ Predict Output
advanced
2:00remaining
Output of modified XOR code with different array
What is the output of this C code that finds two unique elements using XOR?
DSA C
#include <stdio.h>

void findTwoUnique(int arr[], int n) {
    int xor = 0;
    for (int i = 0; i < n; i++) {
        xor ^= arr[i];
    }
    int set_bit = xor & ~(xor - 1);
    int x = 0, y = 0;
    for (int i = 0; i < n; i++) {
        if (arr[i] & set_bit)
            x ^= arr[i];
        else
            y ^= arr[i];
    }
    printf("%d %d\n", x, y);
}

int main() {
    int arr[] = {4, 1, 2, 1, 2, 5};
    int n = sizeof(arr) / sizeof(arr[0]);
    findTwoUnique(arr, n);
    return 0;
}
A0 0
B4 5
C5 4
D1 2
Attempts:
2 left
💡 Hint
Check which bit is set in XOR and how elements split.
🔧 Debug
advanced
1:30remaining
Identify the error in XOR two unique elements code
What error will this code produce when finding two unique elements using XOR?
DSA C
#include <stdio.h>

void findTwoUnique(int arr[], int n) {
    int xor = 0;
    for (int i = 0; i <= n; i++) {
        xor ^= arr[i];
    }
    int set_bit = xor & ~(xor - 1);
    int x = 0, y = 0;
    for (int i = 0; i < n; i++) {
        if (arr[i] & set_bit)
            x ^= arr[i];
        else
            y ^= arr[i];
    }
    printf("%d %d\n", x, y);
}

int main() {
    int arr[] = {2, 3, 7, 9, 2, 3};
    int n = sizeof(arr) / sizeof(arr[0]);
    findTwoUnique(arr, n);
    return 0;
}
ACompilation error due to missing semicolon
BSegmentation fault due to out-of-bounds array access
CLogical error printing wrong unique elements
DNo error, prints correct output
Attempts:
2 left
💡 Hint
Check the loop boundary in the first for loop.
🚀 Application
expert
2:00remaining
Number of items in result after XOR partition
Given an array where all elements except two appear twice, after XORing all elements and splitting by rightmost set bit, how many elements will be in each partition?
AOne partition has all duplicates plus one unique element; the other has the other unique element only
BBoth partitions have equal number of elements
COne partition has only duplicates; the other has both unique elements
DBoth partitions have only unique elements
Attempts:
2 left
💡 Hint
Duplicates appear twice and share bits; unique elements differ in the chosen bit.

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

  1. Step 1: Understand XOR property for duplicates

    XOR of two identical numbers is 0, so XORing all elements cancels out duplicates.
  2. Step 2: Result after XORing all elements

    The result is XOR of the two unique elements because duplicates cancel out.
  3. Final Answer:

    To cancel out all repeating elements and isolate the XOR of the two unique elements -> Option A
  4. 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

  1. Step 1: Understand XOR identity element

    XOR with 0 leaves the number unchanged, so start with 0.
  2. Step 2: Initialize XOR variable

    Setting xor = 0 allows XORing all elements correctly.
  3. Final Answer:

    int xor = 0; -> Option B
  4. 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

  1. Step 1: XOR all elements in the array

    Calculate 2^3=1, 1^7=6, 6^9=15, 15^2=13, 13^3=14.
  2. Step 2: Result after XORing all elements

    The final XOR value is 14, which is XOR of the two unique elements 7 and 9.
  3. Final Answer:

    14 -> Option A
  4. 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)
B. Loop range should be 0 to 5, not 0 to 6
C. Missing initialization of x and y to zero
D. No error, code works correctly

Solution

  1. Step 1: Check set_bit calculation

    set_bit = xor & ~(xor - 1) correctly finds rightmost set bit.
  2. Step 2: Verify loops and initialization

    Loops run from 0 to 5 (6 elements), x and y initialized to 0 correctly.
  3. Final Answer:

    No error, code works correctly -> Option D
  4. 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

  1. Step 1: XOR all elements to get XOR of two unique elements

    This cancels out duplicates and leaves XOR of unique pair.
  2. Step 2: Find rightmost set bit in XOR result

    This bit differs between the two unique elements.
  3. 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.
  4. 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
  5. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard