- 論壇徽章:
- 0
|
原帖由 cjaizss 于 2007-2-5 14:17 發(fā)表
兩個(gè)指針,一個(gè)步長(zhǎng)為1,一個(gè)步長(zhǎng)為2,往前進(jìn),時(shí)間復(fù)雜度O(n),空間復(fù)雜度O(1)
這個(gè)題目和原來(lái)的判斷鏈表是不是循環(huán)鏈表的問(wèn)題有一些區(qū)別的,原來(lái)是要證明鏈表是不是循環(huán)的,現(xiàn)在的是已知某部分是循環(huán)的要求找到這個(gè)循環(huán)的頭結(jié)點(diǎn).
我想到的辦法是,從頭開(kāi)始一次取出把鏈表中的結(jié)點(diǎn)組成另一個(gè)鏈表,判斷這個(gè)鏈表是不是循環(huán)的,第一個(gè)滿足條件的頭結(jié)點(diǎn)就是了.
比如以上面的測(cè)試數(shù)據(jù)為例:
第一次取出:
0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> (3)
第二次取出:
1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> (3)
第三次取出:
2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> (3)
以此類推.
不知道有沒(méi)有更好的辦法,關(guān)注. |
|