Leetcode160 相交链表(大白话说思路)——链表专题

思路:两个指针分别指向两条链表头,每人一次走一步如果为空移到另一条链表,直到两个指针相等,返回指针。

为什么两个指针一定会相等?
两个指针走lenA+lenB-(相交的长度)的步数一定会相遇
当相交长度为0时,相遇时两个指针为空

class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        ListNode*p = headA;
        ListNode*q = headB;
        while(p!=q){
            p = p?p->next:headB;
            q = q?q->next:headA;
        }
        return p;
    }
};

你可能感兴趣的:(链表,leetcode,算法)