乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。
使用兩個指標,乙個跳動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 遍歷鍊錶,入陣...