题目:两个链表的第一个公共节点
思路:双指针。
链表a、b的长度之和是一定的,两个指针分别指向两个链表头,同时后移,若移到链表尾就指向另一链表的表头。这样,二者必会相等。注意若没有相交,则二者同时到达对方链表尾部为空。
代码:
/*
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) {
if (p1 == null) {
p1 = pHead2;
}
else {
p1 = p1.next;
}
if (p2 == null) {
p2 = pHead1;
}
else {
p2 = p2.next;
}
}
return p1;
}
}