题目描述
输入两个链表,找出它们的第一个公共结点。(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)
具体代码实现如下:
/*
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 pA = pHead1;
ListNode pB = pHead2;
while(pA != pB){
pA = pA == null? pHead2 : pA.next;// 如果pA非空,则将pA.next(pA的下一个节点)赋值给pA,否则将pHead2赋值给pA
pB = pB == null? pHead1 : pB.next;// 如果pB非空,则将pB.next(pB的下一个节点)赋值给pB,否则将pHead1赋值给pB
}
return pA;
}
}
人生若只如初见,何事秋风悲画扇。
等闲变却故人心,却道故人心易变。
-----------纳兰性德
小白寄语:学如逆水行舟,不进则退。