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

2022-07-02 13:36:08 字數 1484 閱讀 6807

題目描述:

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

如下面的兩個鍊錶:

在節點 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 value = 8

輸入解釋:相交節點的值為 8 (注意,如果兩個列表相交則不能為 0)。從各自的表頭開始算起,鍊錶 a 為 [4,1,8,4,5],鍊錶 b 為 [5,0,1,8,4,5]。在 a 中,相交節點前有 2 個節點;在 b 中,相交節點前有 3 個節點。

示例 2:

輸入:intersectval = 2, lista = [0,9,1,2,4], listb = [3,2,4], skipa = 3, skipb = 1

輸出:reference of the node with value = 2

輸入解釋:相交節點的值為 2 (注意,如果兩個列表相交則不能為 0)。從各自的表頭開始算起,鍊錶 a 為 [0,9,1,2,4],鍊錶 b 為 [3,2,4]。在 a 中,相交節點前有 3 個節點;在 b 中,相交節點前有 1 個節點。

示例 3:

輸入:ntersectval = 0, lista = [2,6,4], listb = [1,5], skipa = 3, skipb = 2

輸出:null

輸入解釋:從各自的表頭開始算起,鍊錶 a 為 [2,6,4],鍊錶 b 為 [1,5]。由於這兩個鍊錶不相交,所以 intersectval 必須為 0,而 skipa 和 skipb 可以是任意值。

解釋:這兩個鍊錶不相交,因此返回 null。

思路:這個題目是用雙指標的方法解決的,有了雙指標當乙個鍊錶被遍歷結束就繼續遍歷另外乙個鍊錶,如果兩個鍊錶有重合,就返回重合的那個元素

沒有就返回空

**:

/**

* definition for singly-linked list.

* struct listnode ;

*/struct listnode *getintersectionnode(struct listnode *heada, struct listnode *headb)

return p==q?q:null;

}

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

題目 輸入兩個鍊錶,找出它們的第乙個公共節點。def first common node head1,head2 p1,p2 head1,head2 cnt1,cnt2 0,0 while p1 cnt1 1 p1 p1.next while p2 cnt2 1 p2 p2.next p1,p2 h...

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

輸入兩個鍊錶,找出它們的第乙個公共節點。如下面的兩個鍊錶 在節點 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 value 8...

兩個鍊錶第乙個公共節點

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