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

题目描述

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

思路

两个链表有焦点呈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;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容