《程式設計之美》讀書筆記(十) 「鍊錶相交」擴充套件問題

2022-02-25 08:31:43 字數 517 閱讀 7001

感謝azuryy

提供《程式設計之美》3.6節「鍊錶相交」擴充套件問題答案

)擴充套件1:鍊錶1 步長為1, 鍊錶2步長為2 ,如果有環且相交則肯定相遇,否則不相交

list1 head: p1

list2 head: p2

while( p1 != p2 && p1 != null && p2 != null )

if ( p1 == p2 && p1 && p2) //相交

else //不相交

擴充套件2:在判斷是否相交的過程中要分別遍歷兩個鍊錶,同時記錄下各自長度。

node* step( node* p, node* q)

while( q->next )

result = ( p == q );

if ( result )

plen > qlen ? p = head : q = head;

while ( p != q )

reutrn p;

}return null;

}

程式設計之美 鍊錶相交問題

1 判斷兩個鍊錶是否相交 假設兩個鍊錶均不帶環 有四種方法 解法1 直觀的想法 判斷第乙個鍊錶的每個節點是否在第二個鍊錶中,這種方法的時間複雜度為o length h1 length h2 解法2 利用計數的方法 對第乙個鍊錶的節點位址進行hash排序,建立hash表,然後針對第二個鍊錶的每個節點的...

《程式設計之美》兩鍊錶相交及擴充套件詳解

程式設計之美 兩鍊錶相交及擴充套件詳解 給定乙個單鏈表,只給出頭指標h 1 如何判斷是否存在環?2 如何知道環的長度?3 如何找出環的連線點在 4 帶環鍊錶的長度是多少?解法 1 對於問題1,使用追趕的方法,設定兩個指標slow fast,從頭指標開始,每次分別前進1步 2步。如存在環,則兩者相遇 ...

《程式設計之美》讀書筆記

程式設計之美 讀書筆記 一 中國象棋將帥問題 程式設計之美 讀書筆記 二 求二進位制數中1的個數 擴充套件問題 程式設計之美 讀書筆記 三 一摞烙餅的排序問題 程式設計之美 讀書筆記 四 買書折扣問題的貪心解法 程式設計之美 讀書筆記 五 飲料 問題 程式設計之美 讀書筆記 六 連連看遊戲設計 程式...