Bird
Raised Fist0
DSA C++programming~10 mins

Two Non Repeating Elements in Array Using XOR in DSA C++ - Interactive Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to find the XOR of all elements in the array.

DSA C++
int xor_all = 0;
for (int i = 0; i < n; i++) {
    xor_all = xor_all [1] arr[i];
}
Drag options to blanks, or click blank then click option'
A+
B|
C&
D^
Attempts:
3 left
💡 Hint
Common Mistakes
Using + instead of ^ causes incorrect results.
Using & or | does not isolate unique elements.
2fill in blank
medium

Complete the code to find the rightmost set bit in xor_all.

DSA C++
int set_bit_no = xor_all & [1]xor_all;
Drag options to blanks, or click blank then click option'
A-
B~
C+
D!
Attempts:
3 left
💡 Hint
Common Mistakes
Using ~ instead of - gives wrong bit isolation.
Using + or ! does not isolate the bit.
3fill in blank
hard

Fix the error in the loop that separates elements into two groups based on set_bit_no.

DSA C++
int x = 0, y = 0;
for (int i = 0; i < n; i++) {
    if (arr[i] & [1])
        x = x ^ arr[i];
    else
        y = y ^ arr[i];
}
Drag options to blanks, or click blank then click option'
Ai
Bxor_all
Cset_bit_no
Dn
Attempts:
3 left
💡 Hint
Common Mistakes
Using xor_all instead of set_bit_no causes wrong grouping.
Using i or n as mask causes errors.
4fill in blank
hard

Fill both blanks to print the two unique elements found.

DSA C++
std::cout << "The two non-repeating elements are: " << [1] << " and " << [2] << std::endl;
Drag options to blanks, or click blank then click option'
Ax
By
Cxor_all
Dset_bit_no
Attempts:
3 left
💡 Hint
Common Mistakes
Printing xor_all or set_bit_no instead of x and y.
Mixing up the variables.
5fill in blank
hard

Fill all three blanks to complete the function that returns the two unique elements in a vector.

DSA C++
std::vector<int> findTwoUnique(int arr[], int n) {
    int xor_all = 0;
    for (int i = 0; i < n; i++) {
        xor_all = xor_all [1] arr[i];
    }
    int set_bit_no = xor_all & [2]xor_all;
    int x = 0, y = 0;
    for (int i = 0; i < n; i++) {
        if (arr[i] & set_bit_no)
            x = x ^ arr[i];
        else
            y = y ^ arr[i];
    }
    return [3]{x, y};
}
Drag options to blanks, or click blank then click option'
A^
B-
Cstd::vector<int>
Dstd::vector
Attempts:
3 left
💡 Hint
Common Mistakes
Using + instead of ^ for XOR.
Using ~ instead of - for two's complement.
Returning wrong container type.

Practice

(1/5)
1. What is the main idea behind using XOR to find two non-repeating elements in an array where every other element repeats?
easy
A. XOR counts the frequency of each element
B. XOR sorts the array to separate unique elements
C. XOR of all elements gives XOR of the two unique elements
D. XOR swaps the two unique elements in the array

Solution

  1. Step 1: Understand XOR properties

    XOR of a number with itself is 0, and XOR with 0 is the number itself.
  2. Step 2: Apply XOR to all elements

    XORing all elements cancels out repeating elements, leaving XOR of two unique elements.
  3. Final Answer:

    XOR of all elements gives XOR of the two unique elements -> Option C
  4. Quick Check:

    XOR cancels duplicates, leaving unique pair XOR [OK]
Hint: XOR all elements to isolate unique pair XOR result [OK]
Common Mistakes:
  • Thinking XOR sorts or counts elements
  • Assuming XOR gives unique elements directly
  • Confusing XOR with addition or subtraction
2. Which of the following C++ code snippets correctly initializes the XOR variable to find two unique elements in an array arr of size n?
easy
A. int xorVal = 0; for(int i = 1; i <= n; i++) xorVal ^= arr[i];
B. int xorVal = 0; for(int i = 0; i < n; i++) xorVal ^= arr[i];
C. int xorVal = 1; for(int i = 0; i < n; i++) xorVal ^= arr[i];
D. int xorVal = arr[0]; for(int i = 1; i < n; i++) xorVal += arr[i];

Solution

  1. Step 1: Initialize XOR with 0

    Start with 0 because XOR with 0 returns the number itself.
  2. Step 2: Loop through array correctly

    Loop from 0 to n-1 to cover all elements; use XOR assignment operator ^=.
  3. Final Answer:

    int xorVal = 0; for(int i = 0; i < n; i++) xorVal ^= arr[i]; -> Option B
  4. Quick Check:

    Correct loop and XOR initialization [OK]
Hint: Initialize XOR with 0 and loop from 0 to n-1 [OK]
Common Mistakes:
  • Starting loop from 1 and missing first element
  • Using addition instead of XOR
  • Initializing XOR with 1 instead of 0
  • Looping out of array bounds
3. What will be the output of the following C++ code snippet?
int arr[] = {2, 3, 7, 9, 2, 3};
int n = 6;
int xorVal = 0;
for(int i = 0; i < n; i++) {
    xorVal ^= arr[i];
}
std::cout << xorVal << std::endl;
medium
A. 14
B. 9
C. 7
D. 0

Solution

  1. Step 1: XOR all elements

    Calculate XOR stepwise: 0^2=2, 2^3=1, 1^7=6, 6^9=15, 15^2=13, 13^3=14.
  2. Step 2: Result is XOR of two unique elements

    Since 2 and 3 repeat, XOR leaves 7 and 9 combined as 14.
  3. Final Answer:

    14 -> Option A
  4. Quick Check:

    XOR of unique pair (7^9) = 14 [OK]
Hint: XOR duplicates cancel; result is XOR of unique elements [OK]
Common Mistakes:
  • Calculating XOR incorrectly stepwise
  • Assuming output is one unique element
  • Confusing XOR with sum
4. Identify the error in the following code snippet that attempts to find two non-repeating elements using XOR:
int xorVal = 0;
for(int i = 0; i <= n; i++) {
    xorVal ^= arr[i];
}
medium
A. Loop runs out of array bounds causing runtime error
B. XOR operator is used incorrectly
C. xorVal should be initialized with arr[0]
D. Loop should start from 1 instead of 0

Solution

  1. Step 1: Check loop bounds

    Loop runs from i=0 to i<=n, which means i goes up to n, exceeding array index (0 to n-1).
  2. Step 2: Consequence of out-of-bounds access

    Accessing arr[n] causes undefined behavior or runtime error.
  3. Final Answer:

    Loop runs out of array bounds causing runtime error -> Option A
  4. Quick Check:

    Array index must be less than n [OK]
Hint: Use i < n in loops to avoid out-of-bounds [OK]
Common Mistakes:
  • Using <= instead of < in loop condition
  • Initializing xorVal incorrectly
  • Starting loop from wrong index
5. Given the array arr = {4, 1, 2, 1, 2, 5}, which of the following steps correctly finds the two non-repeating elements using XOR?
hard
A. Add all elements and subtract twice the sum of repeating elements
B. Sort array, then pick first two elements as unique
C. XOR all elements to get 1, then XOR with 0 to get unique elements
D. XOR all elements to get 1, find rightmost set bit, partition array by this bit, XOR partitions separately

Solution

  1. Step 1: XOR all elements

    XOR(4^1^2^1^2^5) = 4 ^ (1^1) ^ (2^2) ^ 5 = 4 ^ 0 ^ 0 ^ 5 = 1.
  2. Step 2: Find rightmost set bit of XOR result

    Rightmost set bit of 1 is 1 (binary 0001).
  3. Step 3: Partition array by this bit and XOR separately

    Group elements with this bit set and not set, XOR each group to find unique elements 4 and 5.
  4. Final Answer:

    XOR all elements to get 1, find rightmost set bit, partition array by this bit, XOR partitions separately -> Option D
  5. Quick Check:

    Partitioning by set bit isolates unique elements [OK]
Hint: Use rightmost set bit to split and XOR partitions [OK]
Common Mistakes:
  • Skipping partition step after XOR
  • Using sorting instead of XOR
  • Confusing addition with XOR
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