采用双指针的方法,才可将空间复杂度降为O(1),在A,B两个链表分别设置一个指针,当走到该链表的最后时,再指向另一个链表的头指针继续走,如果两个链表有相交,那么两个指针必然会在交点处相遇。
class Solution {
public:
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
if(headA==nullptr || headB==nullptr){
return nullptr;
}
ListNode* p1=headA;
ListNode* p2=headB;
while(p1!=p2){
p1= (p1==nullptr? headB : p1->next);
p2= (p2==nullptr? headA : p2->next);
}
return p1;
}
};