leetcode160 c语言 一个巧妙的解法

leetcode160 c语言 一个巧妙的解法

leetcode 160 原题链接: leetcode160

思路:
两个指针每次从两个链表开头开始走,每次同时走一步,当指针走到NULL时交换到另外一个链表开始走,当这两个指针相遇的时候,他们第一次相遇的点,为这两个链表的交汇点。

##巧妙解法:

struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {
     
    struct ListNode *p=headA,*q=headB;
    while(p!=q)
    {
     
        if(p)  p=p->next;
        else p=headB;
        if(q)  q=q->next;
        else q=headA;
    }
    return p;  
}

注:本文博主也是借鉴了别人的思路。

你可能感兴趣的:(leetcode,c,leetcode,160)