Find three numbers appeared only once
        Posted  
        
            by shilk
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by shilk
        
        
        
        Published on 2010-06-09T04:02:56Z
        Indexed on 
            2010/06/09
            17:52 UTC
        
        
        Read the original article
        Hit count: 379
        
In a sequence of length n, where n=2k+3, that is there are k unique numbers appeared twice and three numbers appeared only once.
The question is: how to find the three unique numbers that appeared only once?
for example, in sequence 1 1 2 6 3 6 5 7 7 the three unique numbers are 2 3 5.
Note: 3<=n<1e6 and the number will range from 1 to 2e9
Memory limits: 1000KB , this implies that we can't store the whole sequence.
Method I have tried(Memory limit exceed):
I initialize a tree, and when read in one number I try to remove it from the tree, if the remove returns false(not found), I add it to the tree. Finally, the tree has the three numbers. It works, but is Memory limit exceed.
I know how to find one or two such number(s) using bit manipulation. So I wonder if
we can find three using the same method(or some method similar)?
Method to find one/two number(s) appeared only once:
If there is one number appeared only once, we can apply XOR to the sequence to find it.
If there are two, we can first apply XOR to the sequence, then separate the sequence into 2 parts by one bit of the result that is 1, and again apply XOR to the 2 parts, and we will find the answer.
© Stack Overflow or respective owner