输入两个链表,找出它们的第一个公共节点。
题解
核心思想是利用两个链表的 节点和 相同
- 首先进行判空操作
- 循环的条件是只要两个节点的引用的地址(使用==)不相同,则继续循环
- 如果 A 链表的引用为空之后,将A链表的引用调整到B链表的头结点
- B链表同理
- 最后返回任意一个节点的引用就是第一个公共节点
public class Solution {
public ListNode getIntersectionNode(ListNode headA, ListNode headB) {
if(headA==null || headB==null){
return null;
}
ListNode headACurNode = headA;
ListNode headBCurNode = headB;
// 核心循环结束的条件
// equals通常用来比较两个对象的内容是否相等,==用来比较两个对象的地址是否相等。
while (headACurNode!=headBCurNode){
if(headACurNode == null){
headACurNode = headB;
}else {
headACurNode = headACurNode.next;
}
if(headBCurNode == null){
headBCurNode = headA;
}else {
headBCurNode = headBCurNode.next;
}
}
return headACurNode;
}
}