相交链表 leetcode java
题目
输入输出
代码
/**
* 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(ListNode headA, ListNode headB) {
if (headA == null ||headB == null){
return null;
}
ListNode p1 = headA,p2 =headB;
while(p1 != p2){
p1 = p1 != null?p1.next:headB;
p2 = p2 !=null?p2.next:headA;
}
return p1;
}
}
结果
思路
首先头为空的时候返回空,然后两个指针分别代替两个头指针往下走,核心是p1走完A的链表后走B的链表与p2走完B的链表再走A的链表,两者到达交点是的路程一样,所以会相等,跳出while循环,返回交点值。
路径和都是1+2+3,所以会交于交点。