一道数据结构算法题
現有一個鏈表,證明如果存在環,則:使用兩個指針同時前進但步長不一樣,則能夠在有限步之后能夠相逢。
題目的意思是我歸納出來的,我的解題思路是這樣的:
能夠相下逢的意思是:
在走了x步以后,x×S1 和 x×S2 對N同余,其中S1、S2為兩個指針的步長,N為環的長度。
(x*s1) %N = (x*s2) %N
等價于:
x*s1 - a*N = x*s2 - b*N
=> x = ( (a - b)*N ) / ( s1 - s2 )
a, b 為指針所走的圈數。a 和b之間的關系于s1,s2有關。
a/b = s1 / s2
這樣,上式可改寫為:
x =?( a*(1 - s2/s1)*N ) / (s1 - s2)
題目的意思是我歸納出來的,我的解題思路是這樣的:
能夠相下逢的意思是:
在走了x步以后,x×S1 和 x×S2 對N同余,其中S1、S2為兩個指針的步長,N為環的長度。
(x*s1) %N = (x*s2) %N
等價于:
x*s1 - a*N = x*s2 - b*N
=> x = ( (a - b)*N ) / ( s1 - s2 )
a, b 為指針所走的圈數。a 和b之間的關系于s1,s2有關。
a/b = s1 / s2
這樣,上式可改寫為:
x =?( a*(1 - s2/s1)*N ) / (s1 - s2)
轉載于:https://www.cnblogs.com/froster/archive/2005/12/28/306525.html
總結
- 上一篇: 问一下天涯的大神么,HR进?
- 下一篇: 有感于框架设计难,实施框架更难!