{ 1,1,2,2,2,2,3,3,3,4,4,5,5}, here 3 is missing its pair, does this also
comes under this problem?

surender

On Thu, Aug 25, 2011 at 8:12 AM, Dave <dave_and_da...@juno.com> wrote:

> @Shailesh: Sir, your response is unresponsive, because the original
> poster specifically asked for a solution that was < O(n). Please don't
> waste our time giving answers that so obviously do not meet the
> problem statement.
>
> Dave
>
> On Aug 24, 6:33 pm, smb <shaileshbir...@gmail.com> wrote:
> > XOR all the elements, the answer is the number you want.
> >
> > On Aug 24, 5:11 pm, Don <dondod...@gmail.com> wrote:
> >
> >
> >
> > > I assume that "elements in pairs" means that each value occurs exactly
> > > twice except for the one single.
> > > This algorithm is O(log n) and is nonrecursive. Writing it recursively
> > > would make it a couple of lines shorter, but because it is purely tail
> > > recursion, that is not necessary.
> >
> > > // Given an array "a" of size elements in which all elements occur in
> > > pairs except for one single item,
> > > // find the single item and return its value.
> > > int findSingle(int *a, int size)
> > > {
> > >   while(1)
> > >   {
> > >     // For an array of size 1, the only element is the single.
> > >     if (size == 1) return a[0];
> >
> > >     // The logic below won't work for size three, but it is simple to
> > > find the single.
> > >     else if (size == 3) return (a[0] == a[1]) ? a[2] : a[0];
> > >     else
> > >     {
> > >       // Pick the midpoint of the array
> > >       int midpoint = size/2;
> >
> > >       // If we are looking at the second element of a pair, move back
> > > to the first element
> > >       if (a[midpoint] == a[midpoint-1]) --midpoint;
> >
> > >       // If midpoint is not a pair, that is the single.
> > >       else if (a[midpoint] != a[midpoint+1]) return a[midpoint];
> >
> > >       // If midpoint is odd, look at left half of the array
> > >       if (midpoint % 2) size = midpoint;
> >
> > >       else // If midpoint is even, look at the right half of the array
> > >       {
> > >         a += midpoint;
> > >         size -= midpoint;
> > >       }
> > >     }
> > >   }
> >
> > > }
> >
> > > On Aug 24, 4:49 am, atul purohit <gonewiththe...@gmail.com> wrote:
> >
> > > > Hi,
> >
> > > > A* sorted *integer array contains elements in pairs. All the pairs
> are
> > > > complete except one element whose pair is missing. Find that element.
> >
> > > > Ex.   { 1,1,2,2,2,2,3,3,4,5,5}
> > > >  result = 5
> >
> > > > There is a standard solution which returns an XOR of all the
> elements. But
> > > > this needs O(n) time complexity. The person who asked me this
> question said
> > > > that this can be done in < O(n). Maybe we can eliminate some
> elements.
> > > > Anyone knows how to do this?
> >
> > > > Cheers,
> > > > Atul- 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 algogeeks@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.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@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