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.
Notes:
- If The linked lists has no intersection at all, return
null .
- The linked lists must retain their original structure after the function returns.
- You may assume there is no cycles anywhere in the entire linked structure.
- Your code should preferably run in O (n) time and use only O (1) memory
- From the back of the alignment, just compare the following elements, there is no same
- There's no middle there's a same, back again different situation
/** * Definition for singly-linked list. * public class ListNode {* int val; * ListNode Next; * listnode (int x) {* val = x; * next = null; *< c5/>} *} */public class Solution {public ListNode getintersectionnode (ListNode heada, ListNode headb) { ListNode result = NULL; ListNode Tempa=heada; ListNode tempb=headb;if (Heada = = NULL | | headb = = NULL) {return null;} int a = 1, b = 1;while (Heada.next! = null) {A++;heada = Heada.next;} while (headb.next! = null) {b++;headb = Headb.next;} int temp = 0;if (a >= b) {temp = A-b;while (temp! = 0) {Tempa = tempa.next;temp--;}} else {temp = B-a;while (temp!) = 0) {TEMPB = tempb.next;temp--;}} while (tempa!= null) {if (Tempa = = TEMPB) {result = Tempa;break;} else {Tempa = TEMPA.NEXT;TEMPB = Tempb.next;}} return result;} }
Leetcode intersection of the Linked Lists