两个链表的第一个公共结点

题目描述

输入两个链表,找出它们的第一个公共结点。

思路

两个链表有焦点呈Y型,A链表的长度为A+C,B链表的长度为B+C,C为公共链表的长度,那么A和B分别从头节点出发,A走过A+C+B,B走过B+C+A,就一定会相遇。

个人解法
/*
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 node1=pHead1;
        ListNode node2=pHead2;
        while(node1!=node2){
//当链表1走完后,就从链表2的头节点开始走
            node1=(node1==null)?pHead2:node1.next;
//当链表2走完后,就从链表1的头节点开始走
         node2=(node2==null)?pHead1:node2.next;
        }
            return node1;
    }
}

你可能感兴趣的:(两个链表的第一个公共结点)