leetcode --160

相交鏈表

題目描述

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

解題方法

方法一:常規思路,暴力求解

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

在這裏插入圖片描述

方法二:雙指針法

思路難想到,看了題解才知道的

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

在這裏插入圖片描述
暴力法的時間複雜度是O(m*n),雙指針法的時間複雜度是O(m+n),空間複雜度都是O(1)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章