您的当前位置:首页正文

两个链表的第一个公共结点

2024-11-29 来源:个人技术集锦

输入两个链表,找出它们的第一个公共结点。

当不存在公共节点时,返回空节点。

样例
给出两个链表如下所示:
A: a1 → a2

c1 → c2 → c3

B: b1 → b2 → b3

输出第一个公共节点c1

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *findFirstCommonNode(ListNode *headA, ListNode *headB) {
        auto p=headA,q=headB;
        while(p!=q)
        {
            p=p ?p->next:headB;//如果p不空,p就走到他的下一个节点,如果
           // p空了,说明此时p只能往回走,去往headB走
            q=q ?q->next:headA;
            //这里觉得很好玩,就是询问这个节点q=,q说我要走哪里呢,q?q也不知道,然后给出两种选择
        }
    }
};
显示全文