方法1:使用set存储A链表的顺序地址,然后再遍历B链表节点寻找与set(A链表)中相同的地址,返回。
方法2:
class Solution {
public:
int get_list_len(ListNode* head){//计算链表长度
int len=0;
while(head){
len++;
head=head->next;
}
return len;
}
ListNode *forward_long_list(int long_len,int short_len,ListNode *head){
int move_len=long_len-short_len;
while(head&&move_len){
head=head->next;
move_len--;
}
return head;
}
ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
int listA_len=get_list_len(headA);
int listB_len=get_list_len(headB);
if(listA_len>listB_len){
headA=forward_long_list(listA_len,listB_len,headA);
}
else{
headB=forward_long_list(listB_len,listA_len,headB);
}
while(headA&&headB){
if(headA==headB){
return headA;
}
headA=headA->next;
headB=headB->next;
}
return NULL;
}
};