鍍金池/ 問(wèn)答/人工智能  網(wǎng)絡(luò)安全/ 對(duì)于網(wǎng)上大多數(shù)判斷鏈表是否有環(huán)的思路提出疑問(wèn)

對(duì)于網(wǎng)上大多數(shù)判斷鏈表是否有環(huán)的思路提出疑問(wèn)

網(wǎng)上大多思路都是通過(guò)兩個(gè)指針,分別從鏈表的頭節(jié)點(diǎn)出發(fā),一個(gè)每次向后移動(dòng)一步,另一個(gè)移動(dòng)兩步,兩個(gè)指針移動(dòng)速度不一樣,如果存在環(huán),那么兩個(gè)指針一定會(huì)在環(huán)里相遇。
這樣雖然能完成目的,但是感覺(jué)追趕式的速度會(huì)比較慢,可能會(huì)遍歷一些多余的節(jié)點(diǎn)
我的思路是這樣的
定義兩個(gè)指針,初始值都指向同一個(gè)節(jié)點(diǎn)。然后其中一個(gè)指針A開(kāi)始遍歷,另一個(gè)指針B原地不動(dòng)。當(dāng)指針A遍歷到鏈表末尾都碰不到指針B的話,就是無(wú)環(huán)鏈表。否則就是有環(huán)鏈表。
這樣的話,判斷單鏈表是否有環(huán)最多只需遍歷一遍鏈表而已。
不知這種解法有無(wú)漏洞,還請(qǐng)各位大佬指點(diǎn)一二

回答
編輯回答
青裙

你并不知道環(huán)的起始在那個(gè)位置,并不是head開(kāi)始就形成環(huán)的。

2018年2月2日 01:35
編輯回答
空痕

你的思路很容易就找到死循環(huán)的例子

o - o - o
    \   /
       o
2017年9月19日 09:22