Write a program to find the node at which the intersection of the singly linked lists begins.
For example, the following, linked lists:
A: a1→a2 c1→c2→c3 B: b1→b2→b3
Begin to intersect at node C1.
Find out the position of the first merged node (or insert), note that the complexity is O (N), then go through two linked lists, to find out the length of the long list of the "cut", the following is a good comparison, the code is as follows:
1 classSolution {2 Public:3ListNode *getintersectionnode (ListNode *heada, ListNode *headb) {4 intlen1, Len2;5Len1 = Len2 =0;6ListNode * p =Heada;7ListNode * q =headb;8 while(p) {9p = p->Next;Tenlen1++; One } A while(q) { -Q = q->Next; -len2++; the } - if(Len1 >len2) { - intdiff = len1-Len2; - while(diff--) +Heada = heada->Next; -}Else if(Len2 >len1) { + intdiff = len2-len1; A while(diff--) atHEADB = headb->Next; - } - while(Heada) { - if(Heada = =headb) - returnHeada; -Heada = heada->Next; inHEADB = headb->Next; - } to returnNULL; + } -};
Leetcode oj:intersection of two Linked Lists (insertion of two linked lists)