Finding the number missing in the sequence
algorithm, xor
Solution
To answer your question , you just have to remember that
A XOR B = C => C XOR A = B
and it immediately follows that
(PARTIAL SUM) XOR (MISSING ELEMENT) = (TOTAL) =>
(TOTAL) XOR ( PATIAL SUM) = (MISSING ELEMNT)
To prove the first property, just write down the XOR truth table:
A B | A XOR B
0 0 | 0
0 1 | 1
1 0 | 1
1 1 | 0
Truth table in short : if both the bits are same, result of XOR is false, true otherwise.
On an unrelated note, this property of XOR makes it a nice candidate for simple ( but not trivial ) forms of encryption.
Problem
I have been given a list of n integers and these integers are in the range of 1 to n. There are no duplicates in list.But one of the integers is missing in the list.I have to find the missing integer. ``` Example: If n=8 I/P [7,2,6,5,3,1,8] O/P 4 I am using a simple concept to find the missing number which is to get the sum of numbers total = n*(n+1)/2 And then Subtract all the numbers from sum. ``` But the above method will fail if the sum of the numbers goes beyond maximum allowed integer. So i searched for a second solution and i found a method as follows: ``` 1) XOR all the elements present in arr[], let the result of XOR be R1. 2) XOR all numbers from 1 to n, let XOR be R2. 3) XOR of R1 and R2 gives the missing number. ``` How is this method working?..How is the XOR of R1 and R2 finds the missing integer in the above case?