相交链表--对的人始终会相遇

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

解法:
设置两个指针,分别从链表头部开始遍历,当遍历到尾部时,转换到另一个链表的头部继续遍历。
如果两链表有交点,则两个指针会相遇在交点。否则不会。

 public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        if(headA==null||headB==null){
            return null;
        }
        ListNode p=headA;
        ListNode q=headB;
        while (p!=null||q!=null){
            if(p==null){
                p=headB;
            }
            if(q==null){
                q=headA;
            }
            if(p==q){
                return p;
            }
            p=p.next;
            q=q.next;
        }
        return null;
    }

你可能感兴趣的:(相交链表--对的人始终会相遇)