仓库源文站点原文


title: '算法:两个链表的第一个公共结点' cover: https://img.paulzzh.com/touhou/random?45 categories: 算法题目 date: 1996-07-27 08:00:00 tags: [算法题目, 链表]

toc: true

<br/>

<!--more-->

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

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

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

(注意因为传入数据是链表,所以错误测试数据的提示是用其他方式显示的,保证传入数据是正确的)


分析

设定两个指针分别从list1和list2开始.

list1当到达链表1结尾时, 继续从链表2开始; list2同理;

最后:

代码

public class Solution {
    public ListNode FindFirstCommonNode(ListNode head1, ListNode head2) {
        ListNode list1 = head1, list2 = head2;
        while (list1 != list2) {
            list1 = list1 == null ? head2 : list1.next;
            list2 = list2 == null ? head1 : list2.next;
        }
        return list1;
    }
}