leetcode 160 相交链表

题目描述看起来有点让人匪夷所思,看了题解还是不懂为什么要这么搞,但是双指针的方法还是很巧妙的,使用两个指针遍历A,B两个链表,分别到达尾节点后就赋予另外一个节点的头结点值,之后继续遍历,最后会在相交节点汇合。

class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        if (headA == nullptr || headB == nullptr) {
            return nullptr;
        }
        ListNode *pA = headA, *pB = headB;
        while (pA != pB) {
            pA = pA == nullptr ? headB : pA->next;
            pB = pB == nullptr ? headA : pB->next;
        }
        return pA;
    }
};

  

posted @ 2021-08-17 16:29  zhaohhhh  阅读(23)  评论(0)    收藏  举报