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)

发布了184 篇原创文章 · 获赞 253 · 访问量 34万+

猜你喜欢

转载自blog.csdn.net/williamgavin/article/details/104524593