66 兩個鍊錶的第乙個公共結點

2022-06-26 19:51:11 字數 750 閱讀 6646

解題思路:

定義2個指標p、q。

有公共節點的情況:

不同部分為a, 和b,公共部分為c;讓兩個指標一起走,p從a走到c就轉向b, q從b走到c轉向a,有a + c + b = b + c + a,則p和q在公共節點相遇。

沒有公共節點:

p從a走到頭就轉向b;q從b走到頭轉向a。a+b=b+a,p和q會在空節點相遇。

其中listnode *p = heada, *q = headb;

可以寫成  auto p = heada, q = headb;

補充:struct node ;

node a,b,c,d,e,f,g;

node *head;

head = &a;  // head頭指標

a.next = &b;

b.next = &c;

c.next = &d;

d.next = &e;

e.next = &f;

f.next = &g;

f.next = null; //結尾指標為空

abcdefg,就是這個鍊錶的各個節點。

兩個鍊錶的第乙個公共結點

思路 獲取兩個鍊錶的長度,求的長度差n,讓長鍊表先遍歷n次,然後長鍊表和短鍊錶同時遍歷,當長鍊錶和短鍊錶相等時,即為第一公共結點。o m1 m2 public class findfirstcomnode int len1 getnodelength root1 int len2 getnodele...

兩個鍊錶的第乙個公共結點

題目 輸入兩個鍊錶,找出他們的第乙個公共結點。方法1 分別把兩個鍊錶的節點放入兩個棧裡,這樣兩個鍊錶的尾結點就位於兩個棧的棧頂,接下來比較兩個棧頂的結點是否相同。如果相同,則把棧頂彈出接著比較下乙個棧頂,直到找到最後乙個相同的結點。時間和空間複雜度都是o m n 方法2 先遍歷兩個鍊錶得到它們的長度...

兩個鍊錶的第乙個公共結點

輸入兩個鍊錶,找出它們的第乙個公共結點。分析 如果兩個單向鍊錶有公共的結點,那麼這兩個鍊錶從某乙個結點開始,他們的next結點都指向同乙個結點,但由於是單向鍊錶的結點,每個結點都只有乙個next結點,因此從第乙個公共結點開始,之後他們所有結點都是重合的,不可能出現分支。public listnode...