LeetCode Algorithm 160. 相交链表
生活随笔
收集整理的這篇文章主要介紹了
LeetCode Algorithm 160. 相交链表
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
160. 相交鏈表
Ideas
這題之前左神算法課的時候也講過,那是一個帶環的相交鏈表,不過原理都是一樣的。
雙指針,a指針先沿著headA開始走,走到頭之后開始沿著headB繼續走,b指針先沿著headB開始走,走到頭之后開始沿著headA繼續走。
假設鏈表headA和headB的長度分別是m和n,鏈表headA的不相交部分有a個節點,鏈表headB的不相交部分有b個節點,兩個鏈表相交的部分有c個節點,則有 a+c=m,b+c=n。
a指針走了a+c+b次,b指針走了b+c+a次之后,兩個指針就會同時到達兩個鏈表相交的結點。
Code
C++
class Solution { public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {if (headA == nullptr || headB == nullptr) {return nullptr;}ListNode *a = headA, *b = headB;while (a != b) {a = a == nullptr ? headB : a->next;b = b == nullptr ? headA : b->next;}return a;} };總結
以上是生活随笔為你收集整理的LeetCode Algorithm 160. 相交链表的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 将森林转换为对应的二叉树,若在二叉树中,
- 下一篇: LeetCode Algorithm 2