标签:intersect 相交 遍历 code java list lan section 解题思路
在面试中被问到这个问题,没有想出来,遂去LeetCode进行查看,将理解的题解写在下面
利用两个临时的节点遍历 一个遍历A 一个遍历B 遍历完A以后指向B的头节点开始遍历 另外一个反之亦然这是因为此处的相交节点从交点后半段都是相同的设A的长度为a B的长度为b 经过互换头节点后相交节点前的节点数差异被消除 如果说相交节点的长度A为5,B为3.则消除差异后两个遍历指针所在位置到相交节点是相同的,如果没有交点说明相交的节点为null 在逻辑中已经默认存在
此处是按照本人所理解的,感觉这题有点考逻辑
public class _160_相交链表 {
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;
}
}
标签:intersect 相交 遍历 code java list lan section 解题思路
原文地址:https://www.cnblogs.com/clion/p/14071670.html