1.题目描述
2.示例
3.思路分析:应用双指针,PA和PB,当PA遍历完毕,让PA指向PB的头结点,当PB遍历完毕,让PB指向PA的头结点,知道两个指针相等
4.代码展示:
struct ListNode *getIntersectionNode(struct ListNode *headA, struct ListNode *headB) {
if(headA==NULL||headB==NULL)
{
return NULL;
}
struct ListNode* pA=headA;
struct ListNode* pB=headB;
while(pA!=pB)
{
pA=pA==NULL?headB:pA->next;
pB=pB==NULL?headA:pB->next;
}
return pA;
}
5.复杂度分析
时间复杂度:O(m+n),数据移动了m+n次
空间复杂度分析:O(1),未开辟空间