题解 | #两个链表的第一个公共结点#
两个链表的第一个公共结点
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 p1=pHead1; ListNode p2=pHead2; while(p1!=p2){ //当 p1 到达链表 headA 的末尾时,重新定位到链表 headB 的头结点; //当 p2到达链表 headB的末尾时,重新定位到链表 headA的头结点; //这样,当它们相遇时,所指向的结点就是第一个公共结点。 p1=(p1!=null)?p1.next:pHead2; p2=(p2!=null)?p2.next:pHead1; } return p1; } }
使用三元运算符主要是为了防止下面这种特殊情况。