文章目录
相交链表
题目描述
解题方法
方法一:常规思路,暴力求解
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)