一、题目描述
编写一个程序,找到两个单链表相交的起始节点。
1->2->3->4->5
6>7->8->3->4->5
返回 3->4->5
二.示例代码
public class GetIntersectionNode {
public static void main(String[] args) {
ListNode listNode = new ListNode(1);
ListNode listNode2 = new ListNode(2);
ListNode listNode3 = new ListNode(3);
ListNode listNode4 = new ListNode(4);
ListNode listNode5 = new ListNode(5);
listNode.next = listNode2;
listNode2.next = listNode3;
listNode3.next = listNode4;
listNode4.next = listNode5;
ListNode listNode6 = new ListNode(6);
ListNode listNode7 = new ListNode(7);
ListNode listNode8 = new ListNode(8);
listNode6.next = listNode7;
listNode7.next = listNode8;
listNode8.next = listNode3;
ListNode result = getIntersection(listNode, listNode6);
System.out.println(result);
}
private static ListNode getIntersection(ListNode a, ListNode b) {
if (a == null || b == null) {
return null;
}
ListNode pointA = a;
ListNode pointB = b;
while (pointA != pointB) {
if (pointA == null) {
pointA = b;
} else {
pointA = pointA.next;
}
if (pointB == null) {
pointB = a;
} else {
pointB = pointB.next;
}
}
return pointA;
}
}