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; } }