160 相交鍊錶 C

2021-09-24 00:15:06 字數 682 閱讀 9503

最開始我的想法是分別遍歷2個鍊錶,得到2個長度。

然後2個指標再次從頭開始,長鍊表的的指標先走差值,然後再同時走,如果碰到相等的就是相交節點。最後走到尾部兩個指標都是null,就沒有相交節點。

從效率上說,這個想法是沒有問題的,但是在程式設計的時候就要區分哪乙個長哪乙個短,比較繁瑣。

而**的思路則是,讓p1p2分別從lista和listb同時出發,一旦到達尾部,則跳到另一條鍊錶的頭部,繼續走。

這樣2個指標都要走2個鍊錶長度的總和,但是不必區分長鍊表與短鍊錶。

短鍊表指標正好比長鍊錶指標早出發差值個節點。

在第2輪,兩個指標必定相等,如果有相交節點,則在相交節點相等;如果沒有相交節點,則在鍊錶尾部null==null。

/**

* definition for singly-linked list.

* struct listnode

* };

*/class

solution

return p1;}}

;

160相交鍊錶 c

寫在前面,小白從零刷題,在解答會寫出思路,正確答案,以及所有使用到的語法和知識點 思路就是很簡單下面注釋 class solution while headb nullptr 首先遍歷鍊錶長度 if i j else 求的倆鍊錶長度差,並指向同一長度的節點 while a nullptr b b n...

160 相交鍊錶

編寫乙個程式,找到兩個單鏈表相交的起始節點。如下面的兩個鍊錶 在節點 c1 開始相交。示例 1 輸入 intersectval 8,lista 4,1,8,4,5 listb 5,0,1,8,4,5 skipa 2,skipb 3 輸出 reference of the node with valu...

160 相交鍊錶

題目描述 題目問題和難點 1.是找相交的那個節點,而不是值相等的節點。示例中1的值相同但不是相交的節點 2.此題目不考慮有環的鍊錶所以思路很簡單。public static listnode getintersectionnode listnode heada,listnode headb 1.獲取...