import java.util.*; /* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { if(pHead1==null||pHead2==null){ return null; } Stack<ListNode> stack1=new Stack<>(); Stack<ListNode> stack2=new Stack<>(); while(pHead1!=null){ stack1.push(pHead1); pHead1=pHead1.next; } while(pHead2!=null){ stack2.push(pHead2); pHead2=pHead2.next; } ListNode node1=stack1.pop(); ListNode node2=stack2.pop(); if(node1!=node2){ return null; } while(!stack1.isEmpty()&&!stack2.isEmpty()){ node1=stack1.pop(); node2=stack2.pop(); if(node1!=node2){ return node1.next; } } return node1; } }