剑指Offer 52 两个链表的第一个公共节点

180 阅读1分钟

GitHub-JZ-52-源码 :large_blue_diamond:程序员的浪漫

问题描述

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

链表

解法1:

  • 执行用时:68 ms, 在所有 C++ 提交中击败了29.97%的用户
  • 内存消耗:14.4 MB, 在所有 C++ 提交中击败了100.00%的用户

算法复杂度 O(n)

解释


class Solution {
public:
    ListNode* getIntersectionNode(ListNode* headA, ListNode* headB) {
        //* 两个遍历指针
        ListNode* p = headA;
        ListNode* q = headB;
        while (p != q) {
            if (p==nullptr) {
                p = headB;
            }
            else {
                p = p->next;
            }
            if (q == nullptr) {
                q = headA;
            }
            else {
                q = q->next;
            }
        }
        return p;
    }
};