题解 | #两个链表的第一个公共结点#
两个链表的第一个公共结点
https://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46
import java.util.*; /* 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 l1=pHead1,l2=pHead2; while(l1!=l2){ l1 = (l1==null)?pHead2:l1.next; l2 = (l2==null)?pHead1:l2.next; } return l1; } }
思路:1. 有公共节点的时候,N1和N2必会相遇,因为长度一样嘛,速度也一定,必会走到相同的地方的,所以当两者相等的时候,则会第一个公共的节点。2. 无公共节点的时候,此时N1和N2则都会走到终点,那么他们此时都是null,所以也算是相等了。