1. 程式人生 > >環狀鏈表的相遇節點為出發節點。

環狀鏈表的相遇節點為出發節點。

第一次 點距 出發 兩個指針 思路 鏈表 距離 nbsp tar

題目:

一個環狀鏈表(收尾相連),兩個指針 head1 和 head2 從同一個節點出發,head1 每次 走一步,head2 每次走兩步,請證明,兩個指針第一次相遇於出發的節點

思路:假設兩個節點相遇時,慢節點距離出發節點為c,環狀鏈表中有n個節點。

慢節點速度v,經過t時間相遇後的路程為:c = v*t;

快節點速度2*v,經過t時間相遇後的路程為:n+c = 2*v*t;

由上述兩步得到:n+c = 2*c, n=c,所以經過n個節點即出發節點即為相遇節點。

環狀鏈表的相遇節點為出發節點。