i earlier post same question and got the satifactory response from dave
..but now i got new explanation from carcking the coding interview..

plz explain this  with example........thnx in advance,

If we move two pointers, one with speed 1 and another with speed 2, they
will end up meeting if the linked list has a loop. Why? Think about two
cars driving on a track—the faster car will always pass the slower one!
The tricky part here is finding the start of the loop. Imagine, as an
analogy, two people racing around a track, one running twice as fast as the
other. If they start off at the same place, when will they next meet? They
will next meet at the start of the next lap.
Now, let’s suppose Fast Runner had a head start of k meters on an n step
lap. When will they next meet? They will meet k meters before the start of
the next lap. (Why? Fast Runner would have made k + 2(n - k) steps,
including its head start, and Slow Runner would have made n - k steps. Both
will be k steps before the start of the loop.)
Now, going back to the problem, when Fast Runner (n2) and Slow Runner (n1)
are moving around our circular linked list, n2 will have a head start on
the loop when n1 enters. Specifically, it will have a head start of k,
where k is the number of nodes before the loop. Since n2 has a head start
of k nodes, n1 and n2 will meet k nodes before the start of the loop.

-- 
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