160. 相交链表

package leetcode;

public class demo_160 {
    public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
        ListNode nodeA=headA;
        ListNode nodeB=headB;
        
        //A链表跑到到表尾时,会接着B链表
        //B链表跑到到表尾时,会接着A链表
        //此时两个链表长度是一样的,如果有重合地方,则结束运行
        while(nodeA!=nodeB) {
            
            //如果A链表和B链表都跑完,都没出现重合地方,则说明不存在重合
            if(nodeA==null&&nodeB==null) {
                break;
            }
            //A链表跑到到表尾时,会接着B链表
            if(nodeA==null) {
                nodeA=headB;
            }
            else {
                nodeA=nodeA.next;
            }
            //B链表跑到到表尾时,会接着A链表
            if(nodeB==null) {
                nodeB=headA;
            }
            else {
                nodeB=nodeB.next;
            }
        }
        if(nodeA==null) {
            return  null;
        }
        else return nodeA;
    }
}

 

上一篇:python 指针拷贝,浅拷贝和深拷贝


下一篇:剑指Offer——两个链表的第一个公共节点(JS实现)