Please find my solution below.

In this implementation , I find the difference between the lengths of the lists and traverse the longer list by the difference . Now that we have same no. of elements in both the lists to be traversed. I traverse them one by one and check if the objects are equal . If so, I return the object which basically is the intersection point . Else, I return null.

I am getting a Memory Limit Exceeded error. Please help me understand.

I am new to JAVA, and would really appreciate your help.

```
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
if(headA==null || headB==null)
{
return null;
}
ListNode node_A = headA;
ListNode node_B = headB;
ListNode node_t=null;
int countA=0;
int countB=0;
int diff=0,i=0;
while(node_A!=null)
{
node_A = node_A.next;
countA++;
}
while(node_B!=null)
{
node_B = node_B.next;
countB++;
}
diff = countA-countB;
if(diff<0) //ListB is bigger
{
diff*=-1;
node_B=headB;
//traverse extra nodes in List B
while(i<diff)
{
node_B = node_B.next;
i++;
}
node_A = headA;
while((node_A != null)|| ( node_B != null))
{
if(node_A == node_B)
return node_A;
node_A = node_A.next;
node_B = node_B.next;
}
}
else //ListA is bigger or equal to B
{
node_A=headA;
//traverse extra nodes in list A
while(i<diff)
{
node_A = node_A.next;
i++;
}
node_B = headB;
while((node_B != null ) || (node_A != null))
{
if(node_B == node_A)
return node_B;
node_A = node_A.next;
node_B = node_B.next;
}
}
return null;
}
}
```

Thanks ,