Intersection of Two Linked Lists

這道題找兩個鏈表的交叉點,要點是找兩個鏈表的長度差。找到長度差,然後去掉這個差兩個鏈表一起走,就會相遇。有交叉點就在交叉點相遇,沒有的話就是NULL。這個一個走到尾就到另一個的頭結點的作用,就是把這個兩個鏈表的差給去掉了。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        ListNode *l1=headA;
        ListNode *l2=headB;
        if(l1==NULL||l2==NULL) return NULL;
        while(l1!=l2)
        {
           l1=l1?l1->next:headB;
           l2=l2?l2->next:headA;
        }
        return l1;
    }
};


發佈了56 篇原創文章 · 獲贊 9 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章