[LeetCode160. 相交链表] | 刷题打卡

71 阅读1分钟

题目描述

编写一个程序,找到两个单链表相交的起始节点。

image.png

解题思路

以上面的图为例子,设相交的链表的长度为p,A链表的长度减去P得到a,B链表的长度减去P得到b。 由等式a+p+b=b+p+a;可写出代码

AC 代码

public class Solution {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode node1=headA;
        ListNode node2=headB;
        while(node1!=node2){
            if(node1!=null){
                node1=node1.next;
            }else{
                node1=headB;
            }

            if(node2!=null){
                node2=node2.next;
            }else{
                node2=headA;
            }


        }
        return node1;
    }
}

总结

掌握链表的基本遍历,利用公式a+p+b=b+p+a