面試題02 07 鍊錶相交

2021-10-07 04:50:28 字數 792 閱讀 2448

題目大概練過leetcode的鍊錶部分估計都做過這道題;

示例 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 個節點。

分析:

我感覺這道題凡是練過leetcode的鍊錶模組的人都應該做過。一種很直觀的思路就是首先分配遍歷兩個鍊錶,獲取兩個鍊錶的長度後,然後在調整遍歷,達到兩個鍊錶在初始遍歷時的長度的一致性,然後再次分別對兩個鍊錶分別進行遍歷,判斷是否存在從某個點後兩個鍊錶對應的值都是相等的,如果存在這種情況,兩個鍊錶存在相交的情況,否則就不存在;

上述解法有點麻煩,這裡還有一種不容易想到的解法,拿一支筆,畫一下就出來了,分別遍歷兩個鍊錶,當遇到自身的結尾時換到對立的鍊錶,這樣如果相交了,那麼起始的兩個鍊錶相等的點一定就是鍊錶的交點,思想很巧妙,確實不容易想;

**如下:

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

return p;

}};

面試題 02 07 鍊錶相交

題目鏈結 給定兩個 單向 鍊錶,判定它們是否相交並返回交點。請注意相交的定義基於節點的引用,而不是基於節點的值。換句話說,如果乙個鍊錶的第k個節點與另乙個鍊錶的第j個節點是同一節點 引用完全相同 則這兩個鍊錶相交。示例 1 輸入 intersectval 8,lista 4,1,8,4,5 list...

面試題02 07鍊錶相交

1.暴力求解 definition for singly linked list.class listnode object def init self,x self.val x self.next none class solution object defgetintersectionnode ...

leetcode 面試題 02 07 鍊錶相交

面試題 02.07.鍊錶相交 給定兩個 單向 鍊錶,判定它們是否相交並返回交點。請注意相交的定義基於節點的引用,而不是基於節點的值。換句話說,如果乙個鍊錶的第k個節點與另乙個鍊錶的第j個節點是同一節點 引用完全相同 則這兩個鍊錶相交。示例 1 輸入 intersectval 8,lista 4,1,...