160. 相交链表 - 力扣(LeetCode) (leetcode-cn.com)
思路:
因为保证了有环,
定义两个指针, 第一轮让两个到达末尾的节点指向另一个链表的头部,
最后如果相遇则为交点(在第一轮移动中恰好抹除了长度差)
两个指针等于移动了相同的距离, 有交点就返回, 无交点就是各走了两条指针的长度
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
if(headA==null||headB==null)return null;
ListNode A=headA;
ListNode B=headB;
while(A!=B){
A=A==null?headB:A.next;
B=B==null?headA:B.next;
}
return A;
}
}
如果没有保证有环的话,可以先求链表长度差,让长的先走路程差,然后一起走.