美文网首页
【LeetCode-160 | 链表相交】

【LeetCode-160 | 链表相交】

作者: CurryCoder | 来源:发表于2021-12-26 22:20 被阅读0次
    1.jpg 2.jpg 3.jpg 4.jpg
    struct ListNode {
        int val;
        ListNode* next;
        ListNode(int x): val(x), next(nullptr) {}
    };
    
    
    /*
        解题思路:
            1.指针curA指向A链表,指针curB指向B链表,依次往后遍历
            2.如果curA到了末尾,则curA = headB继续遍历
            3.如果curB到了末尾,则curB = headA继续遍历
            4.当较长链表指针指向较短链表头部节点时,两个链表之间的长度差就消除了。于是,只需要将较短链表遍历两次即可找到交点位置
    */
    
    class Solution {
    public:
        ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
            if (headA == nullptr || headB == nullptr) {
                return nullptr;
            }
            ListNode *curA = headA;
            ListNode *curB = headB;
            
            while (curA != curB) { 
                curA = curA == nullptr ? headB : curA->next; 
                curB = curB == nullptr ? headA : curB->next; 
            }
    
            return curA;
        }
    };
    

    相关文章

      网友评论

          本文标题:【LeetCode-160 | 链表相交】

          本文链接:https://www.haomeiwen.com/subject/uodeqrtx.html