方法一:
遍历链表,把每个节点加入Set,利用单值可实现查找公共节点。
方法二:
将公共部分看作C,第一个链单独节点为A,第二个链单独节点为B
当两个遍历头都走过A+B+C节点,则可相遇到第一个公共节点。
即遍历头A遍历A链,遍历完后开始遍历B链,当两个遍历头都遍历完自身长度,再遍历一次对方独立节点长度就可以相遇。
public ListNode getIntersectionNode1(ListNode headA, ListNode headB) {
if (headA == null || headB == null) {
return null;
}
ListNode node1 = headA;
ListNode node2 = headB;
while (node1 != node2) {
node1 = node1.next;
node2 = node2.next;
if (node1 == null && node2 == null) {
return null;
}
if (node1 == null) {
node1 = headB;
}
if (node2 == null) {
node2 = headA;
}
}
return node1;
}