@Anand: Awesome solution ,it works even if more than 1 number repeats
once...

On 9 July 2010 01:10, Anand <anandut2...@gmail.com> wrote:

> One more approach using XOR to find the element repeated thrice.
> Complexity: O(n).
> Space :0
>
> http://codepad.org/p82TGhjR
>
> main()
> {
>   int arr[]= {5,3,3,1,5,5,7,7,8,8};
>
>   int len, set_bit_no, x,y,i;
>
>   int xor, prev;
>   len = sizeof(arr)/sizeof(arr[0]);
>
>   xor = arr[0];
>   x = y=0;
>
>
>   for(i=1;i<len;i++)
>
>   {
>     xor ^= arr[i];
>   }
>
>   printf("xor:%d\n",xor);
>
>   for(i=0;i<len;i++)
>
>   {
>     xor ^= arr[i];
>     if(xor == 0 && prev == arr[i])
>
>     {
>        printf("Found:%d\n", arr[i]);
>
>        break;
>     }
>     prev = arr[i];
>
>   }
> }
>
>
>
> On Thu, Jul 8, 2010 at 6:46 AM, jalaj jaiswal 
> <jalaj.jaiswa...@gmail.com>wrote:
>
>> @ any solution less then nlogn would do + O(1) space
>>
>>
>> On Thu, Jul 8, 2010 at 12:38 AM, souravsain <souravs...@gmail.com> wrote:
>>
>>> @jalaj
>>>
>>> Are we looking for a better than )(nlogn) time and O(1) space
>>> solution? What if our target?
>>>
>>> If a solution is required simple, then as mentioned by Satya, sort the
>>> numbers in O(nlogn) time and scan once in O(n) time. So we get the
>>> number repeated 3 times in O(nlogn) time and O(1) space.
>>>
>>> Sourav
>>>
>>> On Jul 7, 7:36 pm, Priyanka Chatterjee <dona.1...@gmail.com> wrote:
>>> > > I am sceptical whether any XOR solution  exits for your question. But
>>> if
>>> > > the question is modified as :
>>> >
>>> > > *Only one number repeats once,* some no.s repeat twice and only one
>>> number
>>> > > repeat thrice, here is the XOR solution for that.
>>> >
>>> > > suppose the sample array is A[]={1, 3,3,5,5,5, 7,7,8,8}
>>> > > in the example 1 repeats once and 5 repeats thrice.
>>> >
>>> > > 1>let T= XOR( all elements)= 1^5. (all elements occurring even no of
>>> times
>>> > > nullify)   -O(N)
>>> >
>>> > > (  let x=1, y=5
>>> > > As we know the no. repeating once and the no. repeating thrice are
>>> unequal,
>>> > > there must exist some bit 'k' such that x[k]!=y[k]. There may be more
>>> than
>>> > > such bits in x and y. But one such bit certainly yields T[k]=1  after
>>> x^y)
>>> >
>>> > > 2> Now traverse along each bit of  T( in binary) from left or right
>>> and
>>> > > consider  T[i] =1 which is encountered first. store it . let b=i;
>>> > >  (O(M) time and O(M) space to store binary  if M is the bit length of
>>> T.)
>>> >
>>> > > 3> T1= XOR(all elements in given array having bit b as 1)..... (O(N)
>>>  time
>>> > > and O(M) space) ( time is O(MN) but as M<=32 , complexity remain
>>> O(N))
>>> >
>>> > > 4> T0= XOR( all elements in given array having bit b as 0) (O(N) time
>>> and
>>> > > O(M) space)
>>> >
>>> > >  One of (T1,T0) gives the no. that repeats once and the other gives
>>> the no
>>> > > that repeats thrice.
>>> >
>>> > > 6> Now traverse the along array A and compute count for T1 and T0.
>>> The
>>> > > count that equals 3 gives the corresponding no. repeating thrice.
>>> -O(N)
>>> >
>>> > >  Time complexity is O(N+M) . Linear
>>> > > space complexity is O(M) to store binary form.
>>> >
>>> > > But this algo certainly fails if  more than one no. repeats once.
>>> >
>>> > --
>>> > Thanks & Regards,
>>> > Priyanka Chatterjee
>>> > Final Year Undergraduate Student,
>>> > Computer Science & Engineering,
>>> > National Institute Of Technology,Durgapur
>>> > Indiahttp://priyanka-nit.blogspot.com/- Hide quoted text -
>>> >
>>> > - Show quoted text -
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Algorithm Geeks" group.
>>> To post to this group, send email to algoge...@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> algogeeks+unsubscr...@googlegroups.com<algogeeks%2bunsubscr...@googlegroups.com>
>>> .
>>> For more options, visit this group at
>>> http://groups.google.com/group/algogeeks?hl=en.
>>>
>>>
>>
>>
>> --
>> With Regards,
>> Jalaj Jaiswal
>> +919026283397
>> B.TECH IT
>> IIIT ALLAHABAD
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Algorithm Geeks" group.
>> To post to this group, send email to algoge...@googlegroups.com.
>> To unsubscribe from this group, send email to
>> algogeeks+unsubscr...@googlegroups.com<algogeeks%2bunsubscr...@googlegroups.com>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/algogeeks?hl=en.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algoge...@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com<algogeeks%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>



-- 
Thanks & Regards,
Priyanka Chatterjee
Final Year Undergraduate Student,
Computer Science & Engineering,
National Institute Of Technology,Durgapur
India
http://priyanka-nit.blogspot.com/

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algoge...@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to