剑指offer 题解 | #两个链表的第一个公共结点#
两个链表的第一个公共结点
https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46
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) { // 求公共节点,不是相同的数字,所以可以直接用相同指针来判断。 ListNode p = pHead1; ListNode q = pHead2; int count1 = 0; int count2 = 0; while(p!=null){ count1++; p = p.next; } while(q!=null){ count2++; q = q.next; } // 计算出差值,将长的移动到相应位置 int count = Math.abs(count1 - count2); if(count1 < count2){ p = pHead2; q = pHead1; }else{ p = pHead1; q = pHead2; } while(p!=null && count>0){ p = p.next; count--; } // 遍历 while(p!=null && q!=null){ if(p == q){ return p; } p = p.next; q = q.next; } return null; } }#晒一晒我的offer##剑指offer#