题解 | #两个链表的第一个公共结点#
两个链表的第一个公共结点
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; }
两个链表相交,说明两个链表相交后长度相同,如果两个链表长度有差异,从链表长度相同的位置开始同时遍历两个链表,如果有节点相同,说明两个链表有焦点