聲明:版權所有,歡迎轉載。 聯系信箱:[email protected]】
前兩天倩仔仔給我了一套試題讓我看,整體來說感覺題都還算不錯,從中隨便找了兩道。先看題吧!
1、怎樣判斷一個單鏈表中是都存在環路?(搜狗面試題)
兩種方法:
方法一:使用p、q兩個指針,p總是向前走,但q每次都從頭開始走,對於每個節點,看p走的步數是否和q一樣。如圖,當p從6走到3時,用了6步,此時若q從head出發,則只需兩步就到3,因而步數不等,出現矛盾,存在環。
方法二:使用p、q兩個指針,p每次向前走一步,q每次向前走兩步,若在某個時候p == q,則存在環。
2、怎樣快速找到未知長度單鏈表的中間節點?(騰訊面試題)
方法一、先對其進行遍歷,求出長度n,則中間元素就可求出。
方法二、運用快慢指針方法,一個指針每走一步另一個指針走兩步,當後者走到頭時,前者所指結點即為中間元素。
當然了,方法一應該是大多數人都能想到的,但是這樣的公司我相信他要的肯定不是方法一了。
綜上所述,快慢指針還是很有用的。
本文出自 “驿落黃昏” 博客,請務必保留此出處http://yiluohuanghun.blog.51cto.com/3407300/1266231