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

2021-09-26 03:49:11 字數 858 閱讀 9576

題目:輸入兩個鍊錶,找出它們的第乙個公共節點。

方法一:

分別把兩個鍊錶的節點放入兩個棧裡,這樣兩個鍊錶的尾

節點就位於兩個棧的棧頂,接下來比較兩個戰頂的節點是

否相同。如果相同,則把棧頂彈出接著比較下乙個棧頂,

直到找到最後乙個相同的節點。

stackstack1=new stack<>();

stackstack2=new stack<>();

while (phead1!=null)

while (phead2!=null)

listnode tem=null;

while (stack1.peek()==stack2.peek())

}return tem;

}

方法二:

首先遍歷兩個鍊錶得到它們的長度,就能知道哪個鍊錶比

較長,以及長的鍊錶比短的鍊錶多幾個節點。在第二次遍

曆的時候,在較長的鍊錶先走若干步,接著同時在兩個鏈

表上遍歷,找到的第乙個相同的節點就是它們的第乙個公

共節點。

private listnode findfirstcommonnode1(listnode phead1, listnode phead2) 

while(p2!=null)

int length=math.abs(length1-length2);

if(length1>length2)

}else

}while (phead1!=phead2)

return phead1;

}

兩個鍊錶第乙個公共節點

先讓長的鍊錶的指標先走長的之差的步數,兩個再一起走,如果相遇就是第乙個公共節點 如果沒交點,就都走到空 struct listnode class solution while pl2 null 復位指標到頭節點 pl1 phead1 pl2 phead2 int dif len 0 if len1...

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

輸入兩個鍊錶,找出它們的第乙個公共的節點。碰到這種題的時候千萬不要用挨個遍歷的方法,時間複雜度高 對於兩個有相同節點的鍊錶的形狀一定是y。而不是x。然後還可能乙個鍊錶長乙個鍊錶短,我們可以求出差值,然後讓長鍊表先走差值的長度,然後在挨個比較就可以了。這樣時間複雜度就小很多了 劍指offer 名企面試...

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

題目 輸入兩個鍊錶,找出它們的第乙個公共結點。思路 先遍歷兩個鍊錶得到它們的長度,求出長鍊錶比短鍊錶多幾個 第二次遍歷,在長鍊表上先走若干步,接著同時在兩個鍊錶上遍歷,找到的第乙個相同的結點就是它們的第乙個公共結點。public class listnode public listnode find...