力扣-160.相交链表
160.相交链表
public class Solution {public ListNode getIntersectionNode(ListNode headA, ListNode headB) {ListNode p1 = headA;ListNode p2 = headB;while (p1 != p2) {if (p1 != null) {p1 = p1.next;} else {p1 = headB;}if (p2 != null) {p2 = p2.next;} else {p2 = headA;}}return p1;}
}
小结:比较直观的思路是分别求出两个链表的长度,让比较长的链表先跑长度差,之后再一起跑。但是题解中有更好的双指针解法如图,p1
指针先跑a
再跑b-c
,p2
指针先跑b
再跑a-c
,如果有公共结点便会相遇,否则c=0
,两个指针都指向null
。