面試中經常會遇到如何查詢單鏈表的中間節點問題。這一問題通常會採用快慢指標來解決。
可分為兩種情況,一種是查詢第n/2+1個節點,另一種是查詢第n/2個節點,其中n為鍊錶的長度。下面將分別給出這兩種查詢的實現。
1)求n/2 + 1
listnode *fast = head, *slow = head;//, *prev = null;
while( fast && fast->next )
//return prev;
return slow;
分析:
當n為偶數時,fast==nul,退出while迴圈;
當n為奇數時,fast->next = null,退出while迴圈。
2)求n/2
listnode *fast = head, *slow = head;
if(fast==null) return null;
while( fast->next && fast->next->next )
return slow;
分析:
當n為偶數時,fast->next->next==nul,退出while迴圈;
當n為奇數時,fast->next = null,退出while迴圈。
與n/2+1情況相比,n/2情況下,每次多探測乙個元素,因此提前一步結束迴圈,即slow少走一步。
快慢指標之判斷回 單鏈表
因為回 串是對稱的,所以正著讀和倒著讀應該是 樣的,這 特點是解決回 串問題的關鍵.這道題的關鍵在於,單鏈表 法倒著遍歷,法使 雙指標技巧。那麼最簡單的辦法就是,把原始鍊錶反轉存 條新的鍊錶,然後 較這兩條鍊錶是否相同。1 先通過 雙指標技巧 中的快慢指標來找到鍊錶的中點 slow fast hea...
面試 7 快慢指標法玩轉鍊錶演算法面試(一)
鍊錶是我們資料結構面試中比較容易出錯的問題,所以很多面試官總喜歡在這上面下功夫,為了避免出錯,我們最好先進行全面的分析。在實際軟體開發周期中,設計的時間通常不會比編碼的時間短,在面試的時候我們不要著急於寫 而是一開始仔細分析和設計,這將給面試官留下乙個很好的印象。與其很快寫出一段千瘡百孔的 不容仔細...
快慢指標在騰訊面試題的應用
求鍊錶的中間結點值 分奇偶結點個數情況 1 mid與search 搜尋指標,快指標 2 search是mind移動速度的2倍 標尺的思想 include using namespace std 增強 的可讀性,狀態值設定為status typedef int status typedef doubl...