链表(2)

链表相交

具体思路:

  1. 如果链表相交,那么后续的长度肯定是一样的,所以直接从后续长度一样的地方开始判断两个链表是否相等
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        ListNode* dummyA=new ListNode(-1);
        ListNode* dummyB=new ListNode(-1);
        dummyA->next=headA;
        ListNode* traversalA=dummyA;
        dummyB->next=headB;
        ListNode* traversalB=dummyB;
        int lenA=0;
        int lenB=0;
        while(traversalA->next!=nullptr)
        {
            lenA++;
            traversalA=traversalA->next;
        }
        while(traversalB->next!=nullptr)
        {
            lenB++;
            traversalB=traversalB->next;
        }
        if(lenA>lenB)
        {
            
        }
        else
        {
            swap(dummyA,dummyB);
            swap(lenA,lenB);
        }
        traversalA=dummyA;
        traversalB=dummyB;
        for(int i=0;i<lenA-lenB;i++)
        {
            traversalA=traversalA->next;
        }
        while(traversalA!=nullptr)
        {
            if(traversalA==traversalB)
            {
                return traversalA;
            }
            traversalB=traversalB->next;
            traversalA=traversalA->next;
        }
        return nullptr;
    }
};
posted @ 2024-01-18 09:40  LiviaYu  阅读(6)  评论(0)    收藏  举报