劍指offer 解題系列(56) 鍊錶中環的入口

2021-08-02 08:43:38 字數 467 閱讀 4702

乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。

使用兩個指標,乙個跳動1下,另乙個跳動2下,最後兩個指標會在某一處重合,此時再定義乙個新指標從開頭開始跳動,剛才的指標也同時開始跳動,兩者最後會在入口節點相遇。

listnode* entrynodeofloop2(listnode* head)

if(fast==null||fast->next==null)

return null;

//slow指向開頭,fast在相遇點

//得到入口點

slow=head;

while(slow!=fast)

return slow; }

listnode* entrynodeofloop (listnode* phead)  

listnode*s1=phead ,*s2=p2; 

while(s1!=s2)

return s2; }

劍指offer系列 反轉鍊錶

題目描述 給定乙個單鏈表的頭節點,反轉該鍊錶,並返回反轉後的頭節點 分析 從鍊錶頭部開始向後遍歷,注意每次要儲存待反轉節點的prev和next節點 listnode reverselist listnode head return p 其中1 m n list.len 示例 給定的單鏈表為 1 2 ...

劍指offer系列 56 刪除鍊錶中重複的結點

q 在乙個排序的鍊錶中,存在重複的結點,請刪除該鍊錶中重複的結點,重複的結點不保留,返回煉表頭指標。例如,鍊錶1 2 3 3 4 4 5 處理後為 1 2 5 a 題目並不難,重要的是,可以在head前新增乙個頭結點,防止head被刪的情況。listnode deleteduplication li...

劍指offer系列 15 反轉鍊錶

輸入乙個鍊錶,反轉鍊錶後,輸出新鍊錶的表頭。解法1 借助資料結構,陣列,棧來反轉鍊錶。思路1 借助陣列,反轉鍊錶 public listnode reverselist listnode head listnode p head arraylist list newarraylist 遍歷鍊錶,入陣...