题解 | #两个链表的第一个公共结点#
两个链表的第一个公共结点
https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46
<?php
/*class ListNode{
var $val;
var $next = NULL;
function __construct($x){
$this->val = $x;
}
}*/
function FindFirstCommonNode($pHead1, $pHead2)
{
// write code here
$length1=0;
$length2=0;
$p1 = $pHead1;
$p2 = $pHead2;
while($p1){
$length1++;
$p1 = $p1->next;
}
while($p2){
$length2++;
$p2=$p2->next;
}
if($length1 > $length2){
$len = $length1-$length2;
$p = $pHead1;
$pp = $pHead2;
}else{
$len = $length2-$length1;
$p=$pHead2;
$pp = $pHead1;
}
for($i=0;$i<$len;$i++){
$p=$p->next;
}
while($p){
if($p!=$pp){
$p = $p->next;
$pp = $pp->next;
}else{
return $p;
}
}return $p;
}
两个链表相交,说明两个链表相交后长度相同,如果两个链表长度有差异,从链表长度相同的位置开始同时遍历两个链表,如果有节点相同,说明两个链表有焦点