/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) { ListNode cur1 = pHead1; int len1 = 0; ListNode cur2 = pHead2; int len2 = 0; while (cur1 != null) { len1++; cur1 = cur1.next; } while (cur2 != null) { len2++; cur2 = cur2.next; } int len = len2 - len1; if (len < 0) { len = len1 - len2; } cur1 = pHead1; cur2 = pHead2; if (len2 < len1) { for (int i = 1; i <= len; i++) { cur1 = cur1.next; } } else { for (int i = 1; i <= len; i++) { cur2 = cur2.next; } } while (cur1 != cur2) { cur1 = cur1.next; cur2 = cur2.next; } return cur1; } }