Bird
Raised Fist0
DSA C++programming~5 mins

Two Non Repeating Elements in Array Using XOR in DSA C++ - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main idea behind using XOR to find two non-repeating elements in an array?
XOR of all elements gives XOR of the two unique elements because pairs cancel out. Then, use a set bit in this XOR to separate elements into two groups to find the unique elements.
Click to reveal answer
beginner
Why does XOR of a number with itself result in zero?
Because XOR compares bits and returns 1 only if bits differ. Same bits XORed give 0, so number XOR itself is 0.
Click to reveal answer
intermediate
How do you find a set bit in the XOR of two unique numbers?
Use expression (xor & -xor) to isolate the rightmost set bit, which helps separate numbers into two groups.
Click to reveal answer
beginner
What is the time complexity of finding two non-repeating elements using XOR?
O(n), where n is the number of elements, because we traverse the array a few times with simple operations.
Click to reveal answer
intermediate
Explain why dividing elements into two groups based on a set bit helps find the unique elements.
The two unique numbers differ at that bit, so grouping by that bit separates them. XORing each group cancels duplicates, leaving unique numbers.
Click to reveal answer
What does XOR of all elements in an array with exactly two unique elements and others repeating twice give?
ASum of all elements
BZero
CXOR of the two unique elements
DProduct of the two unique elements
How do you isolate the rightmost set bit of a number x?
Ax & (-x)
Bx & (x - 1)
Cx | (-x)
Dx ^ (-x)
Why do we divide elements into two groups based on a set bit in XOR of unique elements?
ATo sort the array
BTo separate the two unique elements
CTo find duplicates
DTo find the maximum element
What is the time complexity of the XOR method to find two unique elements?
AO(n)
BO(n log n)
CO(log n)
DO(n^2)
If XOR of two unique numbers is zero, what does it mean?
AArray is empty
BThey are different numbers
CArray has no unique elements
DThey are the same number
Describe step-by-step how to find two non-repeating elements in an array using XOR.
Think about how XOR cancels pairs and how bit differences help separate unique numbers.
You got /4 concepts.
    Explain why XOR operation is useful for finding unique elements in an array where others repeat twice.
    Focus on XOR behavior with pairs and unique numbers.
    You got /4 concepts.

      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