兩個鍊錶的第乙個公共節點(劍指Offer)

2021-09-01 12:54:10 字數 374 閱讀 4123

一 ,窮舉肯定不行,複雜度太大

二 ,容易想到的思路是通過將乙個鍊錶構造成環,然後轉化為判斷另乙個單向鍊錶與環相交的問題。

三 ,在網上看到一種新奇的思路,由於m+n=n+m,所以轉化為了這樣:

p1指向phead1,p2指向phead2,同時向後移動,當乙個較短的鍊錶遍歷結束就指向到另乙個煉表表頭,

同理對長鍊錶指標,相當於兩個鍊錶指標都走過了m+n的長度,若有相交的,則必定會在遍歷中找到。

**實現如下:

/*

public class listnode

}*/public class solution

}return p1;

}}

劍指offer 兩個鍊錶的第乙個公共節點

題目延伸 程式設計之美中的求兩個節點是否相交 將兩個節點串在一起,若有節點,串在一起的節點就會出現環,利用一二不長不等,兩個節點在環中必然相遇。本題描述 輸入兩個鍊錶,找出它們的第乙個公共結點。分析 乙個簡單的方法是 首先遍歷兩個鍊錶得到它們的長度,就能知道哪個鍊錶比較長,以及長的鍊錶比短的鍊錶多幾...

劍指offer 兩個鍊錶的第乙個公共節點

題目描述 輸入兩個鍊錶,找出它們的第乙個公共結點。公共結點是位址相同的兩個結點,也就是同乙個結點,由於是單向鍊錶,所有從公共結點之後兩鍊錶重合。方式一 繁瑣,易理解版 先給定兩個指標使其能夠表示兩個鍊錶的頭結點 當前節點 首先讓兩個節點的長度保持一致,也就是確定好兩個鍊錶的長度length1,len...

劍指offer 兩個鍊錶的第乙個公共節點

coding utf 8 class listnode def init self,x self.val x self.next none class solution def findfirstcommonnode self,phead1,phead2 write code here p1 phe...