leetcode 52 找兩個鍊錶第乙個交點

2021-10-24 01:36:45 字數 578 閱讀 6075

**如下(示例):

/**

* definition for singly-linked list.

* public class listnode

* }*/public

class

solution

return a;

}}

整體思路:如果兩個鍊錶有交點,那麼我們可以設第一條鍊錶a長度為l1+c,第二條鍊錶b長度為l2+c,其中c代表兩個鍊錶的公共長度,那麼我們依次遍歷兩條鍊錶,當第一條鍊錶a到達結尾時,重新使她指向鍊錶b的首部進行遍歷,當第二條鍊錶b到達結尾時,重新使她指向鍊錶a的首部進行遍歷。為什麼這麼做呢?首先當鍊表a遍歷到其尾部時,經歷的節點數為l1+c,同理,鍊錶b遍歷到其尾部時,經歷的節點是l2+c,當我們讓鍊錶a指向b的首部進行便利時,總會遍歷到l1+c+l2的節點處,同理,當我們讓鍊錶b指向a的首部進行便利時,總會遍歷到l2+c+l1的節點處。可以發現這個節點就是共同節點。

LeetCode 合併兩個鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 遍歷解法 同時不斷遍歷兩個鍊錶,取出小的追加到新的頭節點後,直至兩者其中乙個為空 再將另一者追加的新鍊錶最後 public listnode ...

LeetCode 鍊錶 合併兩個有序鍊錶

將兩個公升序鍊錶合併為乙個新的 公升序 鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 使用迭代。如下 definition for singly linked list.struct listnode listnode ...

找兩個鍊錶的公共節點

首先考慮兩個鍊錶無環的情況。將鍊錶a的尾節點指向頭節點從而形成環。用快慢指標遍歷鍊錶b,乙個一次移動2單位,另乙個移動1單位。如果不相遇則不存在公共節點。如果相遇,則讓其中乙個指標指向b,兩個指標以1單位 次的速度移動,直到相遇。相遇時指向的節點就是公共節點的起始。最後記得將a的尾節點恢復。如下。其...