面試題 判斷單鏈表是否有環

2022-03-25 14:48:46 字數 1161 閱讀 3897

題目:如何在o(1)空間複雜度的條件下判斷單鏈表是否有環。

思路:採用快慢指標,如果有環,兩指標一定會相遇。

圖示:

圖1:初始化情況,建立兩個指標都指向head節點。

圖2:p指標為慢指標,每次只走一步;q指標為快指標,每次走兩步。

圖3:p、q繼續往後走。

圖4:p、q繼續往後走。

圖5:p、q繼續往後走。

圖6:p、q相遇,程式返回true。

如果p、q相遇,則程式返回true,說明該鍊錶有環;若單鏈表中沒有環,則每次判斷q->next和q->next->next是否為nullptr,若滿足則說明沒有環。當單鏈表只有乙個節點或0個節點,返回false。

**:

1/**

2* definition for singly-linked list.

3* struct listnode

7* };8*/

9class

solution

20return

false;21

}22 };

面試題 單鏈表中判斷是否有環以及得出環的入口點

1.判斷單鏈表是否有環 這是很多公司入門級的面試筆試題。單鏈表由於每個結點只有乙個next指標指向下乙個結點,不存在其他指標,所以一旦進入環裡,就再也出不去了。類似於下圖 像乙個烤盤 那麼怎麼樣判斷單鏈表是否有環呢?方法很簡單,把環看作操場,兩位選手在操場上賽跑,乙個速度快,乙個速度慢,如果他們一直...

判斷單鏈表是否有環

1 如何判斷乙個鍊錶是不是這類鍊錶?2 如果鍊錶為存在環,如果找到環的入口點?解答 一 判斷鍊錶是否存在環,辦法為 設定兩個指標 fast,slow 初始值都指向頭,slow每次前進一步,fast每次前進二步,如果鍊錶存在環,則fast必定先進入環,而slow後進入環,兩個指標必定相遇。當然,fas...

判斷單鏈表是否有環

鍊錶結構 struct list 1 判斷單鏈表是否有環 採用追趕法,設定兩個指標p和q,從煉表表頭開始,p每一步走兩個節點,q每一步走乙個節點,如果鍊錶有環則p和q必相遇。如下 判斷鍊錶是否有環,時間複雜度o n 空間複雜度o 1 list hasloopinlist list head else...