题目描述
输入两个链表,找出它们的第一个公共结点。
思路
两个链表有焦点呈Y型,A链表的长度为A+C,B链表的长度为B+C,C为公共链表的长度,那么A和B分别从头节点出发,A走过A+C+B,B走过B+C+A,就一定会相遇。
个人解法
/*
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 node1=pHead1;
ListNode node2=pHead2;
while(node1!=node2){
//当链表1走完后,就从链表2的头节点开始走
node1=(node1==null)?pHead2:node1.next;
//当链表2走完后,就从链表1的头节点开始走
node2=(node2==null)?pHead1:node2.next;
}
return node1;
}
}