找出鍊錶的第乙個公共節點

2022-04-03 10:06:31 字數 1186 閱讀 4393

62.找出鍊錶的第乙個公共結點。

題目:兩個單向鍊錶,找出它們的第乙個公共結點

思路:1.暴力法 但時間複雜度太高 o(n*m)

2.如果兩個鍊錶有公共節點,則從該公共節點起,後面的節點均為公共的,即這兩個鍊錶在第乙個公共節點交叉,然後形成乙個y字型,因為兩個鍊錶長度不一定一樣,所以可以先求得他們的長度n與m,然後得到長度差:math.abs(n-m),然後先對較長鍊錶先行遍歷n-m個節點,從第n-m+1個節點開始對這兩個鍊錶遍歷,然後找出第乙個相同的即可  (網上抄別人的)

3. 位圖法 對兩個鍊錶分別建立bitmap,然後對這兩個bitmap進行與運算即可,則得到的結果中最左邊的那個1即代表第乙個相同元素,然後對該值每次右移一位,直到等於1為止,右移的次數即為第乙個公共元素,時間複雜度為o(n+m)

1

package

com.rui.microsoft;23

//62.找出鍊錶的第乙個公共結點。4//

題目:兩個單向鍊錶,找出它們的第乙個公共結點

5public

class

test62_findcommonnodefromlinkedlists

2526

//位運演算法

27//

時間複雜度o(n+m) => 遍歷鍊錶構造bitmap

28void

find(node headx, node heady)

3940

while(null !=y)

4445

system.out.println(integer.tobinarystring(bitx));

46system.out.println(integer.tobinarystring(bity));

4748

int inter = bitx &bity;

49 string interstr =integer.tobinarystring(inter);

50system.out.println(interstr);

5152

int radix = 0;

53while(inter > 1)

57system.out.println(radix);58}

5960

static

class

node 66}

67 }

找出兩個鍊錶的第乙個公共節點

輸入兩個鍊錶,找出它們的第乙個公共節點。鍊錶定義如下 struct listnode 方法一 暴力查詢 在第乙個鍊錶上順序遍歷每個節點,每遍歷到乙個節點的時候,在第二個鍊錶上順序遍歷每個節點。如果第二個鍊錶上的節點和第乙個鍊錶上的節點一樣,就說明兩個鍊錶在節點上重合,於是就找到了公共的節點。但這種方...

找出鍊錶的第乙個公共結點

題目 兩個單鏈表,找出它們的第乙個公共結點。鍊錶的結點定義為 struct listnode 答 include stdafx.h include include using namespace std struct listnode 構造鍊錶 void createlist listnode ph...

鍊錶的第乙個公共節點python

思路 假設兩個鍊錶是單鏈表。那麼公共節點之後的鍊錶一定是重合的,也就是說,兩個鍊錶的有一節尾巴是一樣的。解決上述問題的方法就是,先求出兩個鍊錶的長度,分別是len1和len2,如果len1len2 while len1 len2 phead1 phead1.next len1 1 elif len1...