相交鏈表
題目描述
解題方法
方法一:常規思路,暴力求解
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)