给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表没有交点,返回 null 。
题目数据保证整个链式结构中不存在环。
注意,函数返回结果后,链表必须保持其原始结构。
解题思路:
定义两个指针分别指向两个链表的头部, 首先让两个指针向后移动,让先移动到末尾的指针从另一个链表的头部再次移动,
最后如果相遇则为交点。
原理:在第一轮移动中恰好抹除了长度差,两个指针等于移动了相同的距离, 有交点就返回, 无交点就是各走了两条指针的长度。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode getIntersectionNode