2022-5-11 链表
给你两个单链表的头节点 headA
和 headB
,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null
。
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { 7 * val = x; 8 * next = null; 9 * } 10 * } 11 */ 12 public class Solution { 13 public ListNode getIntersectionNode(ListNode headA, ListNode headB) { 14 ListNode p1=headA,p2=headB; 15 while (p1!=null||p2!=null){ 16 if (p1==p2) return p1; 17 p1=p1.next; 18 p2=p2.next; 19 if (p1==null&&p2==null) break; 20 if (p1==null) p1=headB; 21 if (p2==null) p2=headA; 22 } 23 return null; 24 } 25 }
思路:让两个指针同时走A+B的过程,如果相交必定会相同,否则必定会同时到达终点null。