题目概述
输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)
解题思路
假设右连个链表A和B,存在着相同的公共节点
A与B节点到公共节点的长度不同,设A的长度为a,B的长度为b,则有 a+b == b+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) {
if(pHead1 == null || pHead2 == null) return null;
// 设置两个指针,然后相互对比即可
ListNode temp1 = pHead1;
ListNode temp2 = pHead2;
while(temp1 != temp2){
temp1 = temp1!=null ? temp1.next : pHead2;
temp2 = temp2!=null ? temp2.next : pHead1;
}
return temp1;
}
}