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。

posted on 2022-05-11 14:38  阿ming  阅读(14)  评论(0编辑  收藏  举报

导航